body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.google-login-btn{align-items:center;background:#fff;border:1px solid #dadce0;border-radius:8px;color:#3c4043;cursor:pointer;display:flex;font-size:.95rem;font-weight:500;gap:.75rem;justify-content:center;margin-bottom:1rem;padding:.75rem 1rem;transition:background .15s,box-shadow .15s;width:100%}.google-login-btn:hover{background:#f8f9fa;box-shadow:0 1px 4px #00000026}.divider-or{align-items:center;color:#999;display:flex;font-size:.85rem;margin:1rem 0;text-align:center}.divider-or:after,.divider-or:before{border-bottom:1px solid #e0e0e0;content:"";flex:1 1}.divider-or span{padding:0 .75rem}@media (max-width:768px){h1{font-size:1.5rem!important}h2{font-size:1.25rem!important}button,input{font-size:1rem!important}.app-header,.content,.sidebar,button,input{padding:.75rem!important}.app-header{flex-direction:column;padding:1rem}.app-header h1{font-size:1.25rem;margin-bottom:.5rem}.class-manager{flex-direction:column;height:auto}.sidebar{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border-color);border-right:none;width:100%}.content,.sidebar{padding:1rem}.class-header{align-items:stretch;flex-direction:column;gap:1rem;padding:1rem 0}.class-code{margin-top:.5rem}.form-grid,.links-grid{grid-template-columns:1fr}.link-card{align-items:flex-start;flex-direction:column}.link-icon{margin-bottom:.5rem}.link-details{width:100%}.link-actions{justify-content:flex-end;margin-top:.5rem;opacity:1;position:static;width:100%}.delete-button,.edit-button{height:3rem;margin-left:.5rem;width:3rem}.delete-button svg,.edit-button svg{height:1.5rem;width:1.5rem}.link-card{flex-wrap:wrap;padding:1.5rem}}@media (max-width:480px){.app-header{padding:.75rem}.app-header h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-info{align-items:flex-start;flex-direction:column;gap:.5rem}.class-list{max-height:200px}.link-forms{padding:1rem}.delete-button,.edit-button{height:3.5rem;width:3.5rem}.delete-button svg,.edit-button svg{height:1.75rem;width:1.75rem}}:root{--primary-color:#4f46e5;--primary-dark:#3730a3;--primary-light:#818cf8;--accent-color:#06b6d4;--success-color:#10b981;--danger-color:#ef4444;--warning-color:#f59e0b;--text-dark:#1f2937;--text-light:#6b7280;--bg-light:#f9fafb;--bg-dark:#111827;--border-color:#e5e7eb;--shadow-sm:0 1px 2px 0 #0000000d;--shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}*{box-sizing:border-box;margin:0;padding:0}body{background-color:#f9fafb;background-color:var(--bg-light);color:#1f2937;color:var(--text-dark);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{background-color:#fff;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border-color);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);padding:1rem 2rem}.app-header h1{color:#4f46e5;color:var(--primary-color);font-size:1.5rem;font-weight:600}.user-info{align-items:center;display:flex;gap:1rem}.logout-button,.user-info span{color:#6b7280;color:var(--text-light)}.logout-button{background-color:initial;border:1px solid #e5e7eb;border:1px solid var(--border-color);border-radius:.375rem;cursor:pointer;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .2s ease}.logout-button:hover{background-color:#f9fafb;background-color:var(--bg-light);color:#1f2937;color:var(--text-dark)}main{flex:1 1;padding:2rem}.login-container{background-color:#fff;border-radius:.5rem;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;box-shadow:var(--shadow-md);margin:4rem auto;max-width:400px;padding:2rem}.login-container h1{color:#4f46e5;color:var(--primary-color);font-size:1.5rem;font-weight:600;margin-bottom:1.5rem;text-align:center}.error-message{background-color:#fee2e2;border-radius:.375rem;color:#ef4444;color:var(--danger-color);font-size:.875rem;margin-bottom:1rem;padding:.75rem}.form-group{margin-bottom:1.25rem}.form-group label{color:#1f2937;color:var(--text-dark);display:block;font-size:.875rem;font-weight:500;margin-bottom:.5rem}.form-group input{border:1px solid #e5e7eb;border:1px solid var(--border-color);border-radius:.375rem;font-size:1rem;padding:.75rem;transition:border-color .2s ease;width:100%}.form-group input:focus{border-color:#818cf8;border-color:var(--primary-light);box-shadow:0 0 0 3px #818cf833;outline:none}.primary-button{background-color:#4f46e5;background-color:var(--primary-color);border-radius:.375rem;font-size:.875rem;padding:.75rem;transition:background-color .2s ease;width:100%}.primary-button:hover{background-color:#3730a3;background-color:var(--primary-dark)}.toggle-auth{color:#6b7280;color:var(--text-light);font-size:.875rem;margin-top:1.5rem;text-align:center}.text-button{color:#4f46e5;color:var(--primary-color);font-weight:500;margin-left:.25rem}.class-manager{border-radius:.5rem;box-shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;box-shadow:var(--shadow);height:calc(100vh - 12rem);overflow:hidden}.class-manager,.sidebar{background-color:#fff;display:flex}.sidebar{border-right:1px solid #e5e7eb;border-right:1px solid var(--border-color);flex-direction:column;padding:1.5rem;width:300px}.sidebar h2{color:#1f2937;color:var(--text-dark);font-size:1.25rem;font-weight:600;margin-bottom:1.5rem}.add-class-form{display:flex;gap:.5rem;margin-bottom:1.5rem}.add-class-form input{border:1px solid #e5e7eb;border:1px solid var(--border-color);border-radius:.375rem;flex:1 1;font-size:.875rem;padding:.625rem}.add-class-form input:focus{border-color:#818cf8;border-color:var(--primary-light);box-shadow:0 0 0 3px #818cf833;outline:none}.add-class-form .primary-button{padding:.625rem 1rem;width:auto}.class-list{flex:1 1;margin:0 -.5rem;overflow-y:auto}.class-item{align-items:center;border-radius:.375rem;cursor:pointer;display:flex;margin-bottom:.5rem;padding:.75rem .5rem;transition:background-color .2s ease}.class-item:hover{background-color:#f9fafb;background-color:var(--bg-light)}.class-item.selected{background-color:#4f46e51a;border-left:3px solid #4f46e5;border-left:3px solid var(--primary-color)}.class-item-content{align-items:center;display:flex;flex:1 1;justify-content:space-between;overflow:hidden}.class-code-badge{background-color:#f9fafb;background-color:var(--bg-light);border-radius:.25rem;color:#6b7280;color:var(--text-light);font-size:.75rem;padding:.125rem .375rem;white-space:nowrap}.delete-class-button{align-items:center;background-color:initial;border:none;border-radius:50%;color:#6b7280;color:var(--text-light);cursor:pointer;display:flex;font-size:1.25rem;height:2.5rem;justify-content:center;opacity:0;transition:all .2s ease;width:2.5rem}.delete-class-button svg{height:1.25rem;width:1.25rem}.class-item:hover .delete-class-button{opacity:1}.delete-class-button:hover{background-color:#fee2e2;color:#ef4444;color:var(--danger-color)}.content{flex:1 1;overflow-y:auto;padding:1.5rem}.empty-state{align-items:center;color:#6b7280;color:var(--text-light);justify-content:center}.empty-state,.link-manager{display:flex;flex-direction:column;height:100%}.class-header{align-items:center;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border-color);display:flex;gap:2rem;justify-content:space-between;margin-bottom:0;padding:1.5rem 0}.class-header h2{color:#1f2937;color:var(--text-dark);flex-shrink:0;font-size:1.75rem;font-weight:600;margin:0}.class-code{align-items:center;background-color:#f9fafb;background-color:var(--bg-light);border:1px solid #e2e8f0;border-radius:.5rem;display:flex;font-size:.9rem;margin-left:1rem;margin-right:auto;padding:.75rem 1rem;width:fit-content}.class-code span{color:#6b7280;color:var(--text-light);margin-right:.5rem}.class-code strong{color:#1f2937;color:var(--text-dark);font-family:monospace;letter-spacing:.05em;margin-right:.5rem}.copy-button{align-items:center;background-color:#fff;border:1px solid #e5e7eb;border:1px solid var(--border-color);border-radius:.375rem;color:#6b7280;color:var(--text-light);cursor:pointer;display:flex;font-size:.8rem;gap:.25rem;padding:.375rem .75rem;transition:all .2s ease}.copy-button:hover{background-color:#4f46e5;background-color:var(--primary-color);border-color:#4f46e5;border-color:var(--primary-color);color:#fff}.link-forms{background-color:#f9fafb;background-color:var(--bg-light);border-radius:.5rem;margin-bottom:1.5rem;padding:1.5rem}.link-forms h3{color:#1f2937;color:var(--text-dark);font-size:1.25rem;font-weight:600;margin-bottom:1rem}.form-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:1.25rem}.add-link-form .primary-button,.edit-link-form .primary-button{max-width:200px}.secondary-button{background-color:#fff;border:1px solid #e5e7eb;border:1px solid var(--border-color);border-radius:.375rem;color:#1f2937;color:var(--text-dark);cursor:pointer;font-size:.875rem;font-weight:500;padding:.75rem 1.5rem;transition:all .2s ease}.secondary-button:hover{background-color:#f9fafb;background-color:var(--bg-light)}.links-preview{flex:1 1;margin-top:1.5rem;overflow-y:auto}.links-preview h3{align-items:center;color:#1f2937;color:var(--text-dark);display:flex;font-size:1.25rem;font-weight:600;margin-bottom:1.5rem}.links-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.empty-links{background-color:#f9fafb;background-color:var(--bg-light);border-radius:.5rem;padding:2rem}.link-card{align-items:center;background-color:#fff;border-radius:.75rem;box-shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;box-shadow:var(--shadow);display:flex;gap:1.25rem;margin-bottom:.5rem;padding:1.5rem;position:relative;transition:all .2s ease}.link-card:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;box-shadow:var(--shadow-md);transform:translateY(-2px)}.link-icon{align-items:center;border-radius:.5rem;color:#fff;display:flex;flex-shrink:0;font-size:1.5rem;height:3rem;justify-content:center;width:3rem}.link-details{flex:1 1;min-width:0}.link-details h4{color:#1f2937;color:var(--text-dark);font-size:1rem;font-weight:600;margin-bottom:.25rem}.link-details a,.link-details h4{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-details a{color:#6b7280;color:var(--text-light);display:block;font-size:.875rem;text-decoration:none}.link-details a:hover{color:#4f46e5;color:var(--primary-color);text-decoration:underline}.link-actions{display:flex;opacity:0;position:absolute;right:0;top:0;transition:opacity .2s ease}.link-card:hover .link-actions{opacity:1}.delete-button,.edit-button{align-items:center;background-color:initial;border:none;border-radius:.25rem;cursor:pointer;display:flex;height:2rem;justify-content:center;transition:all .2s ease;width:2rem}.edit-button{color:#6b7280;color:var(--text-light)}.edit-button:hover{background-color:#f9fafb;background-color:var(--bg-light);color:#4f46e5;color:var(--primary-color)}.delete-button{color:#6b7280;color:var(--text-light)}.delete-button:hover{background-color:#fee2e2;color:#ef4444;color:var(--danger-color)}.loading{color:#6b7280;color:var(--text-light);font-size:1.25rem;height:100vh}@media (max-width:768px){.class-manager{flex-direction:column;height:auto}.sidebar{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border-color);border-right:none;width:100%}.content{padding:1rem}.form-grid{grid-template-columns:1fr}.links-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}.migration-banner{align-items:center;background-color:#fffbea;border:1px solid #ffd43b;border-radius:6px;display:flex;flex-direction:column;margin:20px 0;padding:16px}.migration-banner p{color:#664d03;font-size:14px;margin:0 0 12px;text-align:center}.migration-status{background-color:#f8f9fa;border-radius:4px;color:#1a1a1a;font-size:14px;margin-top:10px;padding:8px 12px}.app-header{background-color:#f8f9fa;border-bottom:1px solid #e9ecef;height:64px;justify-content:space-between;padding:0 20px}.app-header,.user-email{align-items:center;display:flex}.user-email{font-size:14px;gap:5px}.primary-button{background-color:#228be6;border:none;border-radius:4px;color:#fff;cursor:pointer;font-weight:500;padding:8px 16px;transition:background-color .2s}.primary-button:hover{background-color:#1971c2}.text-button{align-items:center;background:none;border:none;color:#228be6;cursor:pointer;display:flex;font-size:14px;gap:5px;padding:6px 10px}.text-button:hover{text-decoration:underline}.loading{align-items:center;color:#6c757d;display:flex;font-size:16px;height:200px;justify-content:center}.auth-options{margin-top:1.5rem}.reset-password{color:#6b7280;color:var(--text-light);font-size:.875rem;margin-top:.5rem;text-align:center}.reset-message{border-radius:.375rem;font-size:.875rem;margin:1rem 0;padding:.75rem}.reset-message.success{background-color:#d1fae5;border:1px solid #a7f3d0;color:#047857}.reset-message.error{background-color:#fee2e2;border:1px solid #fecaca;color:#b91c1c}.button-group{display:flex;gap:.75rem;margin-top:1.25rem}.button-group .primary-button,.button-group .secondary-button{flex:1 1}.reset-form .form-group{margin-bottom:1rem}.class-limit-indicator{color:#6b7280;color:var(--text-light);font-size:.875rem;margin-bottom:1.25rem}.limit-text{display:flex;justify-content:space-between;margin-bottom:.5rem}.limit-reached{color:#ef4444;color:var(--danger-color);font-weight:500}.limit-progress{background-color:#e5e7eb;border-radius:2px;height:4px;overflow:hidden}.limit-bar{border-radius:2px;height:100%;transition:width .3s ease,background-color .3s ease}.admin-dashboard{background-color:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 #0000001a,0 1px 2px 0 #0000000f;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1.5rem;height:calc(100vh - 8rem);overflow:hidden;padding:1.5rem}.admin-header{align-items:center;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;padding-bottom:1rem}.admin-tabs{display:flex;gap:.5rem}.tab-button{background-color:#f3f4f6;border:none;border-radius:.375rem;color:#6b7280;color:var(--text-light);cursor:pointer;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .2s ease}.tab-button.active{background-color:#4f46e5;background-color:var(--primary-color);color:#fff}.admin-content{flex:1 1;overflow-y:auto}.admin-table{border-collapse:collapse;font-size:.875rem;width:100%}.admin-table td,.admin-table th{border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border-color);padding:.75rem;text-align:left}.admin-table th{color:#1f2937;color:var(--text-dark);font-weight:600}.admin-table th,.admin-table tr:hover{background-color:#f9fafb}.action-buttons{display:flex;flex-direction:row;gap:.5rem;white-space:nowrap}.role-button{border:none;border-radius:.25rem;cursor:pointer;font-size:.75rem;font-weight:500;padding:.25rem .5rem;transition:all .2s ease}.role-button.teacher{background-color:#dbeafe;color:#1e40af}.role-button.teacher:hover{background-color:#bfdbfe}.role-button.student{background-color:#dcfce7;color:#166534}.role-button.student:hover{background-color:#bbf7d0}.admin-badge{background-color:#ef4444;border-radius:.25rem;color:#fff;display:inline-block;font-size:.75rem;font-weight:500;margin-left:.5rem;padding:.125rem .375rem}.stats-cards{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));margin-top:1rem}.stat-card{background-color:#f9fafb;border-radius:.5rem;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);padding:1.5rem;text-align:center}.stat-title{color:#6b7280;color:var(--text-light);font-size:.875rem;margin-bottom:.5rem}.stat-value{color:#4f46e5;color:var(--primary-color);font-size:2rem;font-weight:600}.admin-actions{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1.5rem}.migration-button{align-items:center;background-color:#4b5563;border:none;border-radius:.25rem;color:#fff;cursor:pointer;display:inline-flex;font-weight:500;gap:.5rem;max-width:200px;padding:.5rem 1rem;transition:background-color .2s}.migration-button:hover{background-color:#374151}.migration-status{border-radius:.25rem;font-size:.875rem;margin-top:.5rem;padding:.75rem}.migration-status.success{background-color:#d1fae5;border:1px solid #a7f3d0;color:#065f46}.migration-status.error{background-color:#fee2e2;border:1px solid #fecaca;color:#b91c1c}.empty-message{color:#6b7280;font-style:italic;padding:1rem;text-align:center}.delete-button{align-items:center;background-color:#fee2e2;border:none;border-radius:.25rem;color:#b91c1c;cursor:pointer;display:inline-flex;font-size:.75rem;font-weight:500;justify-content:center;min-width:60px;padding:.5rem .75rem;transition:all .2s ease;white-space:nowrap;width:auto;writing-mode:horizontal-tb}.delete-button:hover{background-color:#ef4444;color:#fff}.selected-row{background-color:#3b82f60d!important}.selected-row:hover{background-color:#3b82f61a!important}.admin-table tr{transition:background-color .2s ease}.admin-table tr:hover{background-color:#f3f4f6cc}.links-detail{animation:fadeIn .3s ease;max-height:500px;overflow-y:auto}.modal-overlay{align-items:center;animation:fadeIn .2s ease-out;background-color:#00000080;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.modal-content{animation:slideUp .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-height:90vh;max-width:700px;overflow-y:auto;width:90%}.modal-header{align-items:center;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;padding:1.5rem 2rem 1rem}.modal-header h2{color:#4f46e5;color:var(--primary-color);font-size:1.5rem;font-weight:600;margin:0}.modal-close-button{background:none;border:none;border-radius:6px;color:#6b7280;color:var(--text-light);cursor:pointer;padding:.5rem;transition:all .2s}.modal-close-button:hover{background-color:#f9fafb;background-color:var(--bg-light);color:#1f2937;color:var(--text-dark)}.modal-body{line-height:1.6;padding:1.5rem 2rem}.help-section{margin-bottom:2rem}.help-section h3{align-items:center;color:#1f2937;color:var(--text-dark);display:flex;font-size:1.125rem;font-weight:600;gap:.5rem;margin-bottom:.75rem}.help-section p{color:#6b7280;color:var(--text-light);font-size:.95rem;margin-bottom:.5rem}.help-section p strong{color:#1f2937;color:var(--text-dark);font-weight:600}.help-section code{background-color:#f9fafb;background-color:var(--bg-light);border-radius:.25rem;color:#4f46e5;color:var(--primary-color);font-family:Courier New,monospace;font-size:.875rem;padding:.125rem .375rem}.tip-section{background-color:#fefce8;border:1px solid #fde047;border-radius:8px;padding:1.25rem}.tip-section h3{color:#854d0e}.tip-section p{color:#713f12}.modal-footer{border-top:1px solid #e5e7eb;border-top:1px solid var(--border-color);display:flex;justify-content:center;padding:1rem 2rem 1.5rem}.sidebar-header{justify-content:space-between;margin-bottom:1rem}.help-button,.sidebar-header{align-items:center;display:flex}.help-button{background:#4f46e5;background:var(--primary-color);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.875rem;font-weight:500;gap:.375rem;padding:.5rem .75rem;transition:all .2s;white-space:nowrap}.help-button:hover{background:#3730a3;background:var(--primary-dark);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;box-shadow:var(--shadow-md);transform:translateY(-1px)}.qr-modal-content{animation:slideUp .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-height:90vh;max-width:500px;overflow-y:auto;width:90%}.qr-modal-body{padding:1.5rem 2rem;text-align:center}.qr-code-container{background-color:#fff;border:2px solid #e5e7eb;border:2px solid var(--border-color);border-radius:8px;display:inline-block;margin-bottom:1.5rem;padding:1rem}.qr-code-image{border-radius:4px;display:block;margin:0 auto}.qr-instructions{background-color:#f9fafb;background-color:var(--bg-light);border-radius:8px;margin-bottom:1.5rem;padding:1rem;text-align:left}.qr-instructions h3{color:#1f2937;color:var(--text-dark);font-size:1rem;font-weight:600;margin-bottom:.75rem}.qr-instructions p{color:#6b7280;color:var(--text-light);font-size:.9rem;margin-bottom:.5rem}.app-link-section{background-color:#f0f9ff;border:1px solid #0ea5e9;border-radius:8px;padding:1rem;text-align:left}.link-text{color:#6b7280;color:var(--text-light);font-size:.9rem;margin-bottom:.5rem}.student-app-link{color:#4f46e5;color:var(--primary-color);font-size:.9rem;font-weight:500;text-decoration:none;word-break:break-all}.student-app-link:hover{text-decoration:underline}.student-app-section{background-color:#f0f9ff;border:1px solid #0ea5e9;border-radius:8px;margin:1rem 0;padding:1rem}.app-access-methods{display:flex;flex-direction:column;gap:1rem}.access-method{background-color:#fff;border-radius:6px;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);justify-content:space-between;padding:.75rem}.access-method,.qr-button{align-items:center;display:flex}.qr-button{background:#4f46e5;background:var(--primary-color);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.875rem;font-weight:500;gap:.375rem;padding:.5rem 1rem;transition:all .2s;white-space:nowrap}.qr-button:hover{background:#3730a3;background:var(--primary-dark);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;box-shadow:var(--shadow-md);transform:translateY(-1px)}.student-app-direct-link{align-items:center;background:#10b981;background:var(--success-color);border-radius:6px;color:#fff;display:flex;font-size:.875rem;font-weight:500;gap:.375rem;padding:.5rem 1rem;text-decoration:none;transition:all .2s;white-space:nowrap}.student-app-direct-link:hover{background:#059669;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;box-shadow:var(--shadow-md);transform:translateY(-1px)}@media (max-width:768px){.modal-content,.qr-modal-content{margin:.5rem;max-height:95vh;width:95%}.modal-header{padding:1rem 1.5rem .75rem}.modal-header h2{font-size:1.25rem}.modal-body,.qr-modal-body{padding:1rem 1.5rem}.modal-footer{padding:.75rem 1.5rem 1rem}.sidebar-header{align-items:stretch;flex-direction:column;gap:.75rem}.help-button{justify-content:center;padding:.75rem}.app-access-methods{gap:.75rem}.access-method{align-items:stretch;flex-direction:column;gap:.5rem;text-align:center}.qr-button,.student-app-direct-link{justify-content:center}}.link-modal-content{animation:slideUp .3s ease-out;background:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-height:90vh;max-width:600px;overflow-y:auto;width:90%}.link-modal-form{display:flex;flex-direction:column;height:100%}.link-preview-section{background-color:#f8fafc;border-bottom:1px solid #e5e7eb;border-bottom:1px solid var(--border-color);padding:1rem 2rem .5rem}.preview-card{background:#fff;border:2px dashed #e5e7eb;border:2px dashed var(--border-color);gap:.75rem;padding:.75rem}.preview-card,.preview-icon{align-items:center;border-radius:8px;display:flex;transition:all .2s}.preview-icon{color:#fff;font-size:1.5rem;height:3rem;justify-content:center;width:3rem}.preview-details h4{color:#1f2937;color:var(--text-dark);font-size:1rem;font-weight:600;margin:0 0 .25rem}.preview-details span{color:#6b7280;color:var(--text-light);font-size:.875rem;word-break:break-all}.color-picker-container{align-items:center;display:flex;gap:.5rem}.color-input{border:2px solid #e5e7eb;border:2px solid var(--border-color);border-radius:6px;cursor:pointer;height:2.5rem;transition:all .2s;width:3rem}.color-input:hover{border-color:#4f46e5;border-color:var(--primary-color)}.random-color-btn{align-items:center;background:#fff;border:2px solid #e5e7eb;border:2px solid var(--border-color);border-radius:6px;cursor:pointer;display:flex;font-size:1rem;height:2.5rem;justify-content:center;transition:all .2s;width:2.5rem}.random-color-btn:hover{background-color:#f9fafb;background-color:var(--bg-light);border-color:#4f46e5;border-color:var(--primary-color);transform:rotate(180deg)}.header-content{align-items:center;display:flex;flex:1 1;gap:2rem}.add-link-button{align-items:center;background:#4f46e5;background:var(--primary-color);border:none;border-radius:8px;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;display:flex;flex-shrink:0;font-size:.95rem;font-weight:500;gap:.5rem;padding:.875rem 1.5rem;transition:all .2s;white-space:nowrap}.add-link-button:hover{background:#3730a3;background:var(--primary-dark);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f;box-shadow:var(--shadow-md);transform:translateY(-1px)}.add-link-button:active{transform:translateY(0)}.empty-links{color:#6b7280;color:var(--text-light);margin:2rem 0;padding:4rem 2rem;text-align:center}.empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.empty-links p{font-size:1rem;margin-bottom:1.5rem}.empty-add-button{align-items:center;background:#4f46e5;background:var(--primary-color);border:none;border-radius:8px;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:500;gap:.5rem;padding:.875rem 1.5rem;transition:all .2s}.empty-add-button:hover{background:#3730a3;background:var(--primary-dark);box-shadow:var(--shadow-lg);transform:translateY(-2px)}@media (max-width:768px){.link-modal-content{margin:.5rem;max-height:95vh;width:95%}.class-header{padding:1rem 0}.class-header,.header-content{align-items:stretch;flex-direction:column;gap:1rem}.add-link-button{justify-content:center;padding:.875rem 1.25rem}.class-code{justify-content:center;margin-left:0;margin-right:0;width:100%}.preview-card{flex-direction:column;text-align:center}.color-picker-container{justify-content:center}.form-grid{gap:1rem}.preview-details h4{text-align:center}}.modern-modal-overlay{align-items:center;animation:fadeIn .2s ease-out;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0009;bottom:0;display:flex;justify-content:center;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:1000}.modern-modal-content{animation:slideUp .3s cubic-bezier(.34,1.56,.64,1);background:#fff;border:1px solid #e5e7ebcc;border-radius:16px;box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff1a;max-height:90vh;max-width:520px;overflow:hidden;width:100%}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modern-modal-header{align-items:center;border-bottom:1px solid #f1f5f9;display:flex;justify-content:space-between;margin-bottom:0;padding:1.5rem 1.5rem 0}.modern-modal-title{align-items:center;color:#0f172a;display:flex;font-size:1.25rem;font-weight:600;gap:.75rem;margin:0}.modal-title-icon{color:#4f46e5;color:var(--primary-color);font-size:1.125rem}.modern-close-button{align-items:center;background:none;border:none;border-radius:8px;color:#64748b;cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:all .2s ease}.modern-close-button:hover{background-color:#f1f5f9;color:#374151;transform:scale(1.05)}.modern-preview-section{background:linear-gradient(135deg,#f8fafc,#f1f5f9);border-bottom:1px solid #e2e8f0;padding:1.5rem}.modern-preview-card{align-items:center;background:#fff;border:2px solid #e2e8f0;border-radius:12px;box-shadow:0 4px 6px -1px #0000000d;display:flex;gap:1rem;overflow:hidden;padding:1rem;position:relative;transition:all .3s ease}.modern-preview-card:before{background:linear-gradient(90deg,#4f46e5,#10b981);background:linear-gradient(90deg,var(--primary-color),#10b981);content:"";height:2px;left:0;position:absolute;right:0;top:0}.modern-preview-icon{align-items:center;border-radius:10px;box-shadow:0 4px 12px #00000026;color:#fff;display:flex;flex-shrink:0;font-size:1.75rem;height:3.5rem;justify-content:center;transition:all .3s ease;width:3.5rem}.modern-preview-details{flex:1 1;min-width:0}.modern-preview-title{color:#1e293b;font-size:1rem;font-weight:600;margin:0 0 .25rem}.modern-preview-title,.modern-preview-url{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;line-height:1.4;overflow:hidden}.modern-preview-url{color:#64748b;font-size:.875rem;margin:0}.modern-form-section{padding:1.5rem}.modern-form-group{margin-bottom:1.25rem}.modern-form-group:last-child{margin-bottom:0}.modern-form-label{color:#374151;display:block;font-size:.875rem;font-weight:600;letter-spacing:-.025em;margin-bottom:.5rem}.modern-form-input{background-color:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;font-size:.95rem;outline:none;padding:.75rem 1rem;transition:all .2s ease;width:100%}.modern-form-input:focus{border-color:#4f46e5;border-color:var(--primary-color);box-shadow:0 0 0 3px #4f46e51a;transform:translateY(-1px)}.modern-form-input::placeholder{color:#9ca3af}.modern-form-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr}.modern-color-picker{align-items:center;display:flex;gap:.75rem}.modern-color-input{border:2px solid #e5e7eb;border-radius:8px;cursor:pointer;flex-shrink:0;height:3rem;outline:none;transition:all .2s ease;width:3rem}.modern-color-input:hover{border-color:#4f46e5;border-color:var(--primary-color);transform:scale(1.05)}.modern-color-presets{display:flex;flex-wrap:wrap;gap:.375rem}.modern-color-preset{border:2px solid #0000;border-radius:6px;cursor:pointer;height:1.75rem;outline:none;position:relative;transition:all .2s ease;width:1.75rem}.modern-color-preset:hover{border-color:#fff;box-shadow:0 2px 8px #0003;transform:scale(1.1)}.modern-color-preset.active{border-color:#fff;box-shadow:0 0 0 2px #4f46e5;box-shadow:0 0 0 2px var(--primary-color);transform:scale(1.1)}.modern-modal-footer{align-items:center;background:#fafafa;border-top:1px solid #f1f5f9;display:flex;gap:.75rem;justify-content:flex-end;padding:1rem 1.5rem 1.5rem}.modern-secondary-button{background:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#374151;cursor:pointer;font-size:.875rem;font-weight:500;outline:none;padding:.75rem 1.5rem;transition:all .2s ease}.modern-secondary-button:hover{background:#f9fafb;border-color:#d1d5db;transform:translateY(-1px)}.modern-primary-button{background:linear-gradient(135deg,#4f46e5,#6366f1);background:linear-gradient(135deg,var(--primary-color) 0,#6366f1 100%);border:none;border-radius:10px;box-shadow:0 4px 12px #4f46e540;color:#fff;cursor:pointer;font-size:.875rem;font-weight:600;outline:none;padding:.75rem 1.5rem;transition:all .2s ease}.modern-primary-button:hover{background:linear-gradient(135deg,#4338ca,#5b21b6);box-shadow:0 8px 20px #4f46e559;transform:translateY(-2px)}.modern-primary-button:active{transform:translateY(0)}@media (max-width:768px){.modern-modal-content{border-radius:12px;margin:.5rem;max-width:95vw;width:95%}.modern-modal-header{padding:1rem 1rem .75rem}.modern-modal-title{font-size:1.125rem}.modern-form-section,.modern-preview-section{padding:1rem}.modern-form-grid{grid-template-columns:1fr}.modern-modal-footer{flex-direction:column-reverse;gap:.5rem;padding:1rem}.modern-primary-button,.modern-secondary-button{justify-content:center;width:100%}.modern-preview-card{padding:.875rem}.modern-preview-icon{font-size:1.5rem;height:3rem;width:3rem}.modern-color-presets{justify-content:center}}.emoji-picker-button{align-items:center;background:#fff;border:2px solid #e5e7eb;border-radius:10px;cursor:pointer;display:flex;justify-content:space-between;outline:none;padding:.75rem 1rem;transition:all .2s ease;width:100%}.emoji-picker-button:hover{border-color:#4f46e5;border-color:var(--primary-color);box-shadow:0 2px 8px #4f46e51a;transform:translateY(-1px)}.selected-emoji{font-size:1.25rem;margin-right:.5rem}.picker-label{color:#6b7280;flex:1 1;font-size:.875rem;text-align:left}.picker-arrow{color:#9ca3af;font-size:.75rem;transition:transform .2s ease}.emoji-picker-button:hover .picker-arrow{transform:rotate(180deg)}.emoji-mini-modal-overlay{align-items:center;animation:fadeIn .2s ease-out;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:1001}.emoji-mini-modal{animation:slideUp .3s cubic-bezier(.34,1.56,.64,1);background:#fff;border:1px solid #e5e7ebcc;border-radius:16px;box-shadow:0 25px 50px -12px #00000040,0 0 0 1px #ffffff1a;max-height:90vh;max-width:450px;overflow:hidden;width:100%}.emoji-modal-header{align-items:center;border-bottom:1px solid #f1f5f9;display:flex;justify-content:space-between;padding:1.25rem 1.5rem .75rem}.emoji-modal-title{align-items:center;color:#0f172a;display:flex;font-size:1.125rem;font-weight:600;gap:.75rem;margin:0}.current-emoji{background:#f8fafc;border-radius:8px;font-size:1.5rem;padding:.25rem}.emoji-close-button{align-items:center;background:none;border:none;border-radius:8px;color:#64748b;cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:all .2s ease}.emoji-close-button:hover{background-color:#f1f5f9;color:#374151;transform:scale(1.05)}.emoji-search-section{padding:1rem 1.5rem .75rem}.emoji-search-input{background-color:#fff;border:2px solid #e5e7eb;border-radius:10px;color:#1f2937;font-size:.95rem;outline:none;padding:.75rem 1rem;transition:all .2s ease;width:100%}.emoji-search-input:focus{border-color:#4f46e5;border-color:var(--primary-color);box-shadow:0 0 0 3px #4f46e51a;transform:translateY(-1px)}.emoji-search-input::placeholder{color:#9ca3af}.emoji-categories{-ms-overflow-style:none;display:flex;gap:.25rem;overflow-x:auto;padding:0 1.5rem .75rem;scrollbar-width:none}.emoji-categories::-webkit-scrollbar{display:none}.emoji-category-tab{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;cursor:pointer;display:flex;font-size:.875rem;gap:.375rem;outline:none;padding:.5rem .75rem;transition:all .2s ease;white-space:nowrap}.emoji-category-tab:hover{background:#f1f5f9;border-color:#cbd5e1}.emoji-category-tab.active{background:#4f46e5;background:var(--primary-color);border-color:#4f46e5;border-color:var(--primary-color);box-shadow:0 2px 8px #4f46e540;color:#fff;transform:translateY(-1px)}.category-icon{font-size:1rem}.category-label{font-weight:500}.emoji-grid-large{grid-gap:.375rem;display:grid;gap:.375rem;grid-template-columns:repeat(8,1fr);max-height:240px;overflow-y:auto;padding:.75rem 1.5rem;scrollbar-color:#cbd5e1 #f8fafc;scrollbar-width:thin}.emoji-grid-large::-webkit-scrollbar{width:6px}.emoji-grid-large::-webkit-scrollbar-track{background:#f8fafc;border-radius:3px}.emoji-grid-large::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.emoji-grid-large::-webkit-scrollbar-thumb:hover{background:#94a3b8}.emoji-item-large{align-items:center;background:#0000;border:2px solid #0000;border-radius:8px;cursor:pointer;display:flex;font-size:1.5rem;height:2.75rem;justify-content:center;outline:none;position:relative;transition:all .2s ease;width:2.75rem}.emoji-item-large:hover{background:#f8fafc;border-color:#e2e8f0;transform:scale(1.1);z-index:1}.emoji-item-large.selected{background:#4f46e5;background:var(--primary-color);border-color:#4f46e5;border-color:var(--primary-color);box-shadow:0 4px 12px #4f46e54d;color:#fff;transform:scale(1.1)}.emoji-item-large.selected:before{align-items:center;background:#10b981;border:2px solid #fff;border-radius:50%;color:#fff;content:"✓";display:flex;font-size:.625rem;height:1rem;justify-content:center;position:absolute;right:-4px;top:-4px;width:1rem}.emoji-no-results{color:#6b7280;grid-column:1/-1;padding:2rem 1rem;text-align:center}.no-results-icon{display:block;font-size:2rem;margin-bottom:.75rem;opacity:.5}.emoji-no-results p{color:#374151;font-size:1rem;margin-bottom:.25rem}.emoji-no-results small{color:#9ca3af;font-size:.875rem}.emoji-modal-footer{background:#fafafa;border-top:1px solid #f1f5f9;padding:.75rem 1.5rem 1.25rem;text-align:center}.emoji-tip{color:#6b7280;font-size:.8rem}@media (max-width:768px){.emoji-mini-modal{margin:.5rem;max-height:85vh;max-width:95vw;width:95%}.emoji-modal-header{padding:1rem 1rem .75rem}.emoji-modal-title{font-size:1rem}.current-emoji{font-size:1.25rem}.emoji-search-section{padding:.75rem 1rem .5rem}.emoji-categories{gap:.25rem;padding:0 1rem .5rem}.emoji-category-tab{font-size:.8rem;padding:.5rem .625rem}.emoji-grid-large{gap:.5rem;grid-template-columns:repeat(6,1fr);max-height:200px;padding:.5rem 1rem}.emoji-item-large{font-size:1.375rem;height:2.5rem;width:2.5rem}.emoji-modal-footer{padding:.5rem 1rem 1rem}.emoji-tip{font-size:.75rem}}
/*# sourceMappingURL=main.72b9dd64.css.map*/