:root{--color-primary: #c9b8e8;--color-primary-dark: #a08cc8;--color-primary-light: #e8e0f5;--color-primary-xlight: #f5f0ff;--color-accent: #b89fd4;--color-text: #3a2f5a;--color-text-light: #7a6f9a;--color-text-muted: #aaa0c8;--color-bg: #f5f0ff;--color-card: #ffffff;--color-card-hover: #faf7ff;--color-border: #ddd5f0;--color-error: #e07070;--color-error-light: #fde8e8;--color-success: #70c0a0;--color-success-light: #e8f7f0;--color-warning: #e0b070;--color-warning-light: #fff3e0;--color-late: #f0c0c0;--color-late-text: #a04040;--color-complete: #d0d0d0;--color-complete-text: #888;--radius: 12px;--radius-sm: 8px;--shadow: 0 2px 12px rgba(160, 140, 200, .15);--shadow-lg: 0 4px 24px rgba(160, 140, 200, .25);--transition: .2s ease}*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body{height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--color-bg);color:var(--color-text);font-size:16px;line-height:1.5}#root{height:100%;display:flex;flex-direction:column}.app{display:flex;flex-direction:column;height:100%;max-width:600px;margin:0 auto;width:100%;background:var(--color-card);box-shadow:var(--shadow-lg)}.app-header{background:linear-gradient(135deg,var(--color-primary) 0%,var(--color-primary-dark) 100%);color:#fff;padding:16px 20px 12px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 2px 8px #a08cc84d;flex-shrink:0}.app-header h1{font-size:1.3rem;font-weight:700;letter-spacing:.3px}.app-header .version{font-size:.7rem;opacity:.75;margin-top:2px}.header-actions{display:flex;gap:8px;align-items:center}.icon-btn{background:#fff3;border:none;border-radius:50%;width:38px;height:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#fff;font-size:1.2rem;transition:background var(--transition)}.icon-btn:hover{background:#ffffff4d}.auth-screen{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;background:var(--color-bg);overflow-y:auto}.auth-logo{font-size:4rem;margin-bottom:8px}.auth-screen h2{font-size:1.8rem;color:var(--color-primary-dark);margin-bottom:4px}.auth-screen .subtitle{color:var(--color-text-light);margin-bottom:32px;font-size:.95rem}.auth-form{width:100%;max-width:360px;display:flex;flex-direction:column;gap:16px}.auth-form .version-display{text-align:center;color:var(--color-text-muted);font-size:.8rem;margin-top:16px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:.875rem;font-weight:500;color:var(--color-text-light)}.form-group input,.form-group textarea,.form-group select{padding:12px 14px;border:2px solid var(--color-border);border-radius:var(--radius-sm);font-size:1rem;color:var(--color-text);background:var(--color-card);outline:none;transition:border-color var(--transition);font-family:inherit}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--color-primary-dark)}.form-group textarea{resize:vertical;min-height:80px}.btn{padding:12px 20px;border:none;border-radius:var(--radius-sm);font-size:1rem;font-weight:600;cursor:pointer;transition:all var(--transition);display:flex;align-items:center;justify-content:center;gap:8px;font-family:inherit}.btn-primary{background:linear-gradient(135deg,var(--color-primary-dark) 0%,var(--color-accent) 100%);color:#fff;box-shadow:0 2px 8px #a08cc866}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 12px #a08cc880}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:var(--color-primary-light);color:var(--color-primary-dark)}.btn-secondary:hover{background:var(--color-primary);color:#fff}.btn-danger{background:var(--color-error-light);color:var(--color-error)}.btn-danger:hover{background:var(--color-error);color:#fff}.btn-ghost{background:transparent;color:var(--color-text-light);padding:8px 12px}.btn-ghost:hover{background:var(--color-primary-xlight)}.btn-sm{padding:8px 14px;font-size:.875rem}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.error-msg{background:var(--color-error-light);color:var(--color-error);padding:10px 14px;border-radius:var(--radius-sm);font-size:.875rem;border-left:3px solid var(--color-error)}.success-msg{background:var(--color-success-light);color:#2d7a5a;padding:10px 14px;border-radius:var(--radius-sm);font-size:.875rem;border-left:3px solid var(--color-success)}.auth-toggle{text-align:center;color:var(--color-text-light);font-size:.9rem}.auth-toggle button{background:none;border:none;color:var(--color-primary-dark);font-weight:600;cursor:pointer;padding:0 4px;font-size:inherit}.first-user-notice{background:var(--color-primary-light);color:var(--color-primary-dark);padding:12px 16px;border-radius:var(--radius-sm);font-size:.875rem;text-align:center}.app-content{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch}.assignment-list{padding:12px 16px;display:flex;flex-direction:column;gap:0}.list-section-label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--color-text-muted);padding:12px 4px 6px}.empty-state{text-align:center;padding:48px 24px;color:var(--color-text-light)}.empty-state .empty-icon{font-size:3rem;margin-bottom:12px}.empty-state p{font-size:1.1rem;font-weight:500;margin-bottom:8px;color:var(--color-text)}.empty-state span{font-size:.9rem}.assignment-item-wrapper{position:relative;overflow:hidden;border-radius:var(--radius);margin-bottom:8px;box-shadow:var(--shadow)}.swipe-actions{position:absolute;top:0;bottom:0;display:flex;align-items:center;padding:0 20px;font-size:1.5rem;pointer-events:none;z-index:0}.swipe-action-left{right:0;background:var(--color-error);color:#fff;border-radius:0 var(--radius) var(--radius) 0}.swipe-action-right{left:0;background:var(--color-success);color:#fff;border-radius:var(--radius) 0 0 var(--radius)}.assignment-card{background:var(--color-card);border:2px solid var(--color-border);border-radius:var(--radius);padding:14px 16px;cursor:pointer;touch-action:pan-y;position:relative;z-index:1;transition:transform .15s ease,box-shadow var(--transition);-webkit-user-select:none;user-select:none}.assignment-card:hover{background:var(--color-card-hover)}.assignment-card.dragging{box-shadow:var(--shadow-lg);z-index:100;opacity:.9}.assignment-card.completed{background:#fafafa;border-color:#e0e0e0}.assignment-card.late{background:#fff5f5;border-color:var(--color-late)}.assignment-card.late .assignment-title{color:var(--color-late-text)}.assignment-header{display:flex;align-items:flex-start;gap:12px}.assignment-checkbox{width:22px;height:22px;border:2px solid var(--color-primary);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px;cursor:pointer;transition:all var(--transition)}.assignment-checkbox.checked{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.assignment-card.completed .assignment-checkbox{background:var(--color-complete);border-color:var(--color-complete)}.assignment-body{flex:1;min-width:0}.assignment-title{font-size:1rem;font-weight:600;color:var(--color-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.assignment-card.completed .assignment-title{text-decoration:line-through;color:var(--color-complete-text)}.assignment-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.meta-badge{font-size:.75rem;padding:2px 8px;border-radius:20px;font-weight:500}.badge-class{background:var(--color-primary-light);color:var(--color-primary-dark)}.badge-type-test{background:#fce4ec;color:#c62828;font-weight:600}.badge-type-quiz{background:#e8eaf6;color:#283593;font-weight:600}.badge-type-project{background:#e0f2f1;color:#00695c;font-weight:600}.badge-teacher{background:#e8f5e9;color:#2e7d32}.badge-due{background:var(--color-warning-light);color:#8a5000}.badge-due.late{background:var(--color-error-light);color:var(--color-error);font-weight:700}.badge-due.soon{background:#fff8e1;color:#f57f17}.assignment-desc{font-size:.85rem;color:var(--color-text-light);margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.drag-handle{color:var(--color-text-muted);font-size:1rem;padding:4px;cursor:grab;flex-shrink:0}.drag-handle:active{cursor:grabbing}.fab{position:fixed;bottom:24px;right:calc(50% - 280px);width:56px;height:56px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary-dark) 0%,var(--color-accent) 100%);color:#fff;font-size:1.5rem;border:none;cursor:pointer;box-shadow:0 4px 16px #a08cc880;display:flex;align-items:center;justify-content:center;transition:all var(--transition);z-index:50}.fab:hover{transform:scale(1.1);box-shadow:0 6px 20px #a08cc899}.fab:active{transform:scale(.95)}@media (max-width: 600px){.fab{right:20px}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#3a2f5a66;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:200;display:flex;align-items:flex-end;justify-content:center;padding:0;animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--color-card);border-radius:var(--radius) var(--radius) 0 0;padding:24px 20px;width:100%;max-width:600px;max-height:90vh;overflow-y:auto;animation:slideUp .25s ease}@keyframes slideUp{0%{transform:translateY(60px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.modal-header h2{font-size:1.2rem;color:var(--color-text)}.modal-close{background:var(--color-primary-light);border:none;border-radius:50%;width:32px;height:32px;font-size:1rem;cursor:pointer;color:var(--color-primary-dark);display:flex;align-items:center;justify-content:center}.modal-form{display:flex;flex-direction:column;gap:14px}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.modal-overlay.centered{align-items:center;padding:20px}.modal.confirm-modal{border-radius:var(--radius);max-width:360px;animation:scaleIn .2s ease}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.admin-panel{padding:16px}.admin-section{margin-bottom:24px}.admin-section h3{font-size:1rem;color:var(--color-text-light);margin-bottom:12px;font-weight:600;text-transform:uppercase;font-size:.8rem;letter-spacing:.8px}.user-list{display:flex;flex-direction:column;gap:8px}.user-item{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--color-primary-xlight);border-radius:var(--radius-sm);border:1px solid var(--color-border)}.user-avatar{width:36px;height:36px;border-radius:50%;background:var(--color-primary);display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:.9rem;flex-shrink:0}.user-info{flex:1;min-width:0}.user-name{font-weight:600;font-size:.95rem;color:var(--color-text)}.user-role{font-size:.75rem;color:var(--color-text-muted)}.user-actions{display:flex;gap:6px}.notifications-panel{padding:16px;display:flex;flex-direction:column;gap:16px}.notif-info{background:var(--color-primary-xlight);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:14px 16px;font-size:.875rem;color:var(--color-text-light);line-height:1.6}.app-tabs{display:flex;background:var(--color-card);border-top:1px solid var(--color-border);flex-shrink:0}.tab-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 0 8px;border:none;background:none;cursor:pointer;color:var(--color-text-muted);font-size:.65rem;font-weight:500;transition:color var(--transition)}.tab-btn .tab-icon{font-size:1.3rem}.tab-btn.active{color:var(--color-primary-dark)}.tab-btn.active .tab-icon{transform:scale(1.1)}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary-dark);border-radius:50%;animation:spin .8s linear infinite;margin:32px auto}@keyframes spin{to{transform:rotate(360deg)}}.loading-state{display:flex;align-items:center;justify-content:center;padding:32px}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}.flex-col{display:flex;flex-direction:column;gap:10px}.mt-4{margin-top:16px}.text-center{text-align:center}.text-sm{font-size:.875rem}.text-muted{color:var(--color-text-muted)}.notif-status{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:20px;font-size:.8rem;font-weight:500}.notif-status.granted{background:var(--color-success-light);color:#2d7a5a}.notif-status.denied{background:var(--color-error-light);color:var(--color-error)}.notif-status.default{background:var(--color-primary-light);color:var(--color-primary-dark)}
