*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f8fafc;color:#334155;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.6}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--slate-50:#f8fafc;--slate-100:#f1f5f9;--slate-200:#e2e8f0;--slate-300:#cbd5e1;--slate-400:#94a3b8;--slate-500:#64748b;--slate-600:#475569;--slate-700:#334155;--slate-800:#1e293b;--slate-900:#0f172a;--cyan-50:#ecfeff;--cyan-100:#cffafe;--cyan-200:#a5f3fc;--cyan-300:#67e8f9;--cyan-400:#22d3ee;--cyan-500:#06b6d4;--cyan-600:#0891b2;--cyan-700:#0e7490;--cyan-800:#155e75;--cyan-900:#164e63;--amber-50:#fffbeb;--amber-100:#fef3c7;--amber-200:#fde68a;--amber-300:#fcd34d;--amber-400:#fbbf24;--amber-500:#f59e0b;--amber-600:#d97706;--amber-700:#b45309;--amber-800:#92400e;--amber-900:#78350f}*{transition:all .2s ease-in-out}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#f1f5f9;background:var(--slate-100)}::-webkit-scrollbar-thumb{background:#cbd5e1;background:var(--slate-300);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#94a3b8;background:var(--slate-400)}@media (max-width:768px){body{font-size:14px}button,input[type=button],input[type=reset],input[type=submit]{min-height:44px;min-width:44px}input[type=email],input[type=number],input[type=password],input[type=tel],input[type=text],input[type=url],select,textarea{font-size:16px}}@media (max-width:480px){body{font-size:13px}h1,h2,h3,h4,h5,h6{line-height:1.3}p{line-height:1.5}}.sidebar{background:linear-gradient(180deg,var(--slate-900) 0,var(--slate-800) 100%);box-shadow:4px 0 20px #0000001a;color:var(--slate-100);display:flex;flex-direction:column;position:relative;width:280px;z-index:10}.sidebar:before{background:linear-gradient(135deg,#06b6d41a,#f59e0b1a);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.sidebar-header{border-bottom:1px solid var(--slate-700);padding:2rem 1.5rem 1.5rem;position:relative;z-index:1}.logo{align-items:center;display:flex;gap:.75rem;margin-bottom:.5rem}.logo-icon{color:var(--cyan-400);filter:drop-shadow(0 0 8px rgba(34,211,238,.3))}.logo h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,var(--cyan-400),var(--amber-400));-webkit-background-clip:text;background-clip:text;font-size:1.5rem;font-weight:700;margin:0}.tagline{color:var(--slate-400);font-size:.875rem;font-weight:400;margin:0}.sidebar-nav{flex:1 1;padding:1.5rem 0;position:relative;z-index:1}.nav-list{list-style:none;margin:0;padding:0}.nav-item{align-items:center;background:none;border:none;color:var(--slate-300);cursor:pointer;display:flex;font-size:.875rem;font-weight:500;gap:.75rem;padding:.875rem 1.5rem;position:relative;text-align:left;transition:all .2s ease;width:100%}.nav-item:hover{background:#ffffff0d;color:var(--slate-100);transform:translateX(4px)}.nav-item.active{background:linear-gradient(90deg,#06b6d426,#06b6d40d);border-right:3px solid var(--cyan-400);color:var(--cyan-400)}.nav-item.active:before{background:linear-gradient(180deg,var(--cyan-400),var(--cyan-600));bottom:0;box-shadow:0 0 10px #22d3ee80;content:"";left:0;position:absolute;top:0;width:3px}.nav-icon{flex-shrink:0;transition:transform .2s ease}.nav-item:hover .nav-icon{transform:scale(1.1)}.nav-item.active .nav-icon{filter:drop-shadow(0 0 4px rgba(34,211,238,.5))}.nav-label{font-weight:500}.sidebar-footer{border-top:1px solid var(--slate-700);padding:1.5rem;position:relative;z-index:1}.user-info{gap:.75rem}.user-avatar,.user-info{align-items:center;display:flex}.user-avatar{background:linear-gradient(135deg,var(--cyan-500),var(--amber-500));border-radius:50%;box-shadow:0 4px 12px #0003;font-size:1.25rem;height:40px;justify-content:center;width:40px}.user-details{flex:1 1}.user-name{color:var(--slate-100);font-size:.875rem;font-weight:600;margin:0 0 .25rem}.user-status{color:var(--cyan-400);font-size:.75rem;font-weight:500;margin:0}.logout-btn{align-items:center;background:none;border:none;border-radius:8px;color:var(--slate-400);cursor:pointer;display:flex;font-size:.875rem;font-weight:500;gap:.5rem;margin-top:.5rem;padding:.75rem 1rem;transition:all .2s ease;width:100%}.logout-btn:hover{background:var(--slate-100);color:var(--slate-600)}.logout-btn:active{transform:translateY(1px)}.mobile-menu-toggle{background:var(--slate-800);border:none;border-radius:8px;box-shadow:0 4px 12px #0003;color:var(--slate-100);cursor:pointer;display:none;padding:.75rem;position:fixed;right:1rem;top:1rem;z-index:1000}.mobile-menu-toggle:hover{background:var(--slate-700)}.mobile-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000080;bottom:0;left:0;position:fixed;right:0;top:0;z-index:998}@media (max-width:1024px){.sidebar{width:240px}.sidebar-header{padding:1.5rem 1rem 1rem}.logo h1{font-size:1.25rem}.nav-item{padding:.75rem 1rem}}@media (max-width:768px){.mobile-menu-toggle{display:block}.sidebar{height:100vh;left:-100%;position:fixed;top:0;transition:left .3s ease;width:280px;z-index:999}.sidebar.open{left:0}.sidebar-header{padding:1rem}.nav-list{display:block;overflow-y:auto;padding:0}.nav-item{border-bottom:1px solid var(--slate-700);border-radius:0;flex-shrink:0;margin-right:0;padding:1rem}.nav-item.active{border-bottom:3px solid var(--cyan-400);border-right:none}.sidebar-footer{display:block}}@media (max-width:480px){.sidebar{width:100%}.logo h1{font-size:1.125rem}.nav-item{font-size:1rem;padding:1.25rem 1rem}.nav-icon{height:20px;width:20px}}.study-calendar{width:100%}.calendar-header{align-items:center;display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;margin-bottom:1.5rem}.calendar-header h3{color:var(--slate-800);font-size:1.125rem;font-weight:600;margin:0}.legend{align-items:center;color:var(--slate-600);display:flex;font-size:.75rem;gap:.5rem}.legend-squares{display:flex;gap:2px}.legend-square{border:1px solid var(--slate-200);border-radius:2px;height:12px;width:12px}.calendar-months{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(3,1fr);max-width:100%}.calendar-month{background:#fff;border:1px solid var(--slate-200);border-radius:12px;box-shadow:0 2px 8px #0000000d;padding:1rem}.month-title{color:var(--slate-800);font-size:1rem;font-weight:600;margin:0 0 .5rem;text-align:center}.month-stats{color:var(--slate-600);display:flex;font-size:.75rem;gap:1rem;justify-content:center;margin-bottom:.75rem}.stat-item{align-items:center;background:var(--slate-50);border:1px solid var(--slate-200);border-radius:4px;display:flex;gap:.25rem;padding:.25rem .5rem}.calendar-header{grid-gap:1px;display:grid;gap:1px;grid-template-columns:repeat(7,1fr);margin-bottom:.5rem}.day-header{color:var(--slate-500);font-size:.625rem;font-weight:600;letter-spacing:.5px;padding:.25rem 0;text-align:center;text-transform:uppercase}.month-grid{grid-gap:1px;display:grid;gap:1px;grid-template-columns:repeat(7,1fr);max-width:100%}.calendar-day{align-items:center;aspect-ratio:1;background:#fff;border:1px solid var(--slate-200);cursor:pointer;display:flex;justify-content:center;min-height:28px;position:relative;transition:all .2s ease}.calendar-day:hover{background-color:var(--slate-50)!important;border-color:var(--cyan-400);box-shadow:0 2px 8px #0000001a;z-index:10}.calendar-day.other-month{background-color:var(--slate-50);color:var(--slate-400)}.calendar-day.has-study{border-color:var(--cyan-300);font-weight:600}.day-number{color:inherit;font-size:.75rem;font-weight:inherit}.calendar-footer{margin-top:1rem;text-align:center}.calendar-note{color:var(--slate-500);font-size:.75rem;font-style:italic;margin:0}.calendar-day:hover:after{background:var(--slate-800);border-radius:6px;box-shadow:0 4px 12px #0003;color:#fff;content:attr(title);font-size:.75rem;margin-bottom:8px;padding:.5rem .75rem;text-align:center;white-space:pre-line}.calendar-day:hover:after,.calendar-day:hover:before{bottom:100%;left:50%;pointer-events:none;position:absolute;transform:translateX(-50%);z-index:1000}.calendar-day:hover:before{border:4px solid #0000;border-top:4px solid var(--slate-800);content:"";margin-bottom:4px}@media (max-width:1200px){.calendar-months{gap:1rem}.calendar-month{padding:.75rem}}@media (max-width:1024px){.calendar-months{gap:1rem;grid-template-columns:repeat(2,1fr)}.calendar-month{padding:.75rem}.month-stats{font-size:.7rem;gap:.5rem}.stat-item{padding:.2rem .4rem}}@media (max-width:768px){.calendar-months{gap:1rem;grid-template-columns:1fr}.calendar-header{align-items:flex-start;flex-direction:column;gap:.75rem}.calendar-header h3{font-size:1rem}.legend{align-self:center;font-size:.7rem}.calendar-month{padding:1rem}.month-title{font-size:.9rem}.month-stats{align-items:center;flex-direction:column;gap:.25rem}.stat-item{font-size:.65rem;padding:.15rem .3rem}.month-grid{gap:1px}.calendar-day{min-height:32px}.day-number{font-size:.75rem}.day-header{font-size:.6rem;padding:.2rem 0}.legend-square{height:10px;width:10px}.calendar-day:hover:after,.calendar-day:hover:before{display:none}}@media (max-width:480px){.calendar-months{gap:.75rem}.calendar-month{border-radius:8px;padding:.75rem}.month-title{font-size:.85rem;margin-bottom:.4rem}.month-stats{margin-bottom:.5rem}.calendar-day{min-height:28px}.day-number{font-size:.7rem}.day-header{font-size:.55rem;padding:.15rem 0}.calendar-header{margin-bottom:.4rem}.legend{font-size:.65rem}.legend-square{height:8px;width:8px}}.stats-card{background:#fff;border:1px solid var(--slate-100);border-radius:16px;box-shadow:0 4px 20px #00000014;overflow:hidden;padding:1.5rem;position:relative;transition:all .3s ease}.stats-card:before{background:linear-gradient(90deg,var(--cyan-400),var(--amber-400));content:"";height:4px;left:0;opacity:0;position:absolute;right:0;top:0;transition:opacity .3s ease}.stats-card:hover{box-shadow:0 8px 30px #0000001f;transform:translateY(-4px)}.stats-card:hover:before{opacity:1}.card-header{align-items:flex-start;display:flex;gap:1rem}.icon-container{align-items:center;border-radius:12px;box-shadow:0 2px 8px #0000001a;display:flex;flex-shrink:0;height:48px;justify-content:center;width:48px}.card-content{flex:1 1;min-width:0}.card-title{color:var(--slate-600);font-size:.875rem;font-weight:600;letter-spacing:.5px;margin:0 0 .5rem;text-transform:uppercase}.card-value{color:var(--slate-800);font-size:1.75rem;font-weight:700;line-height:1.2;margin:0 0 .25rem}@media (max-width:1024px){.stats-card{padding:1.25rem}.card-value{font-size:1.6rem}.icon-container{height:44px;width:44px}}@media (max-width:768px){.stats-card{padding:1.25rem}.card-value{font-size:1.5rem}.icon-container{height:40px;width:40px}.card-title{font-size:.8rem}}@media (max-width:480px){.stats-card{border-radius:12px;padding:1rem}.card-header{gap:.75rem}.card-value{font-size:1.4rem}.icon-container{border-radius:8px;height:36px;width:36px}.card-title{font-size:.75rem;margin-bottom:.4rem}}.dashboard{margin:0 auto;max-width:1200px}.dashboard-header{align-items:flex-start;border-bottom:1px solid var(--slate-200);display:flex;justify-content:space-between;margin-bottom:2rem;padding-bottom:1.5rem}.header-content{flex:1 1}.dashboard-title{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,var(--slate-800),var(--cyan-700));-webkit-background-clip:text;background-clip:text;color:var(--slate-800);font-size:2rem;font-weight:700;margin:0 0 .5rem}.dashboard-subtitle{color:var(--slate-600);font-size:1rem;font-weight:400;margin:0}.view-toggle{background:var(--slate-100);border:1px solid var(--slate-200);border-radius:12px;display:flex;padding:.25rem}.toggle-btn{align-items:center;border-radius:8px;color:var(--slate-600);display:flex;font-size:.875rem;font-weight:500;gap:.5rem;padding:.75rem 1rem;transition:all .2s ease}.toggle-btn:hover{background:var(--slate-50);color:var(--slate-700)}.toggle-btn.active{background:#fff;box-shadow:0 2px 8px #0000001a;color:var(--cyan-600)}.stats-section{margin-bottom:2rem}.stats-section-title{border-bottom:2px solid var(--slate-200);color:var(--slate-800);font-size:1.25rem;font-weight:600;margin:0 0 1rem;padding-bottom:.5rem}.stats-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:1rem}.calendar-section,.friends-section{background:#fff;border:1px solid var(--slate-100);border-radius:16px;box-shadow:0 4px 20px #00000014;margin-bottom:2rem;padding:2rem}.section-header{align-items:center;display:flex;gap:.75rem;margin-bottom:1.5rem}.section-icon{color:var(--cyan-500)}.section-header h2{color:var(--slate-800);font-size:1.5rem;font-weight:600;margin:0}.section-header p{color:var(--slate-600);font-size:.875rem;margin:0 0 0 auto}.calendar-container{background:var(--slate-50);border:1px solid var(--slate-200);border-radius:12px;padding:1.5rem}.friends-placeholder{align-items:center;background:var(--slate-50);border:2px dashed var(--slate-300);border-radius:12px;display:flex;justify-content:center;min-height:200px}.placeholder-content{color:var(--slate-500);text-align:center}.placeholder-icon{margin-bottom:1rem;opacity:.5}.placeholder-content h3{color:var(--slate-600);font-size:1.25rem;font-weight:600;margin:0 0 .5rem}.placeholder-content p{color:var(--slate-500);font-size:.875rem;margin:0}@media (max-width:1024px){.dashboard{max-width:100%}.stats-grid{gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.calendar-section,.friends-section{padding:1.5rem}}@media (max-width:768px){.dashboard-header{align-items:stretch;flex-direction:column;gap:1rem}.dashboard-title{font-size:1.75rem}.view-toggle{align-self:flex-start}.stats-grid{gap:.75rem;grid-template-columns:repeat(2,1fr)}.calendar-section,.friends-section{border-radius:12px;padding:1rem}.section-header{align-items:flex-start;flex-direction:column;gap:.5rem}.section-header h2{font-size:1.25rem}.section-header p{margin-left:0}.calendar-container{padding:1rem}}@media (max-width:480px){.dashboard-header{margin-bottom:1.5rem;padding-bottom:1rem}.dashboard-title{font-size:1.5rem}.dashboard-subtitle{font-size:.875rem}.stats-grid{gap:.75rem;grid-template-columns:1fr}.stats-section-title{font-size:1.125rem}.calendar-section,.friends-section{margin-bottom:1rem;padding:.75rem}.section-header h2{font-size:1.125rem}.calendar-container{padding:.75rem}.toggle-btn{font-size:.75rem;padding:.5rem .75rem}}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{background:#fff;border-radius:12px;box-shadow:0 10px 30px #0003;max-width:400px;padding:40px;width:100%}.login-card h2{color:#333;font-size:28px;font-weight:600;margin-bottom:30px;text-align:center}.form-group{margin-bottom:20px}.form-group label{color:#555;display:block;font-size:14px;font-weight:500;margin-bottom:8px}.form-group input{border:2px solid #e1e5e9;border-radius:8px;box-sizing:border-box;font-size:16px;padding:12px 16px;transition:border-color .3s ease;width:100%}.form-group input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.submit-btn{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:600;margin-top:10px;padding:14px;transition:transform .2s ease,box-shadow .2s ease;width:100%}.submit-btn:hover:not(:disabled){box-shadow:0 8px 25px #667eea4d;transform:translateY(-2px)}.submit-btn:disabled{cursor:not-allowed;opacity:.7;transform:none}.error-message{background:#fee;border:1px solid #feb2b2;border-radius:8px;color:#c53030;font-size:14px;margin-bottom:20px;padding:12px}.toggle-mode{margin-top:20px;text-align:center}.toggle-mode p{color:#666;font-size:14px;margin:0}.toggle-btn{background:none;border:none;color:#667eea;cursor:pointer;font-size:14px;font-weight:600;text-decoration:underline}.toggle-btn:hover{color:#5a67d8}.password-input-container{align-items:center;display:flex;position:relative}.password-input{padding-right:45px!important}.password-toggle{align-items:center;background:none;border:none;border-radius:4px;color:#666;cursor:pointer;display:flex;justify-content:center;padding:4px;position:absolute;right:12px;transition:color .2s ease,background-color .2s ease}.password-toggle:hover{background-color:#667eea1a;color:#667eea}.forgot-password{margin-top:15px;text-align:center}.forgot-password-btn{background:none;border:none;color:#667eea;cursor:pointer;font-size:14px;padding:5px;text-decoration:underline}.forgot-password-btn:hover{color:#5a67d8}.forgot-password-form{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;margin-top:15px;padding:20px}.forgot-password-form p{color:#666;font-size:14px;margin:0 0 15px}.forgot-password-input{border:2px solid #e1e5e9;border-radius:6px;box-sizing:border-box;font-size:14px;margin-bottom:15px;padding:10px 12px;width:100%}.forgot-password-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a;outline:none}.forgot-password-buttons{display:flex;gap:10px;justify-content:center}.cancel-btn,.reset-btn{border-radius:6px;cursor:pointer;flex:1 1;font-size:14px;font-weight:500;max-width:100px;padding:8px 16px;transition:all .2s ease}.reset-btn{background:#667eea;border:none;color:#fff}.reset-btn:hover:not(:disabled){background:#5a67d8}.reset-btn:disabled{cursor:not-allowed;opacity:.7}.cancel-btn{background:#f8f9fa;border:1px solid #dee2e6;color:#666}.cancel-btn:hover{background:#e9ecef;color:#495057}.success-message{background:#d4edda;border:1px solid #c3e6cb;border-radius:6px;color:#155724;font-size:14px;margin-bottom:15px;padding:10px}@media (max-width:480px){.login-card{margin:10px;padding:30px 20px}.login-card h2{font-size:24px}.form-group input{font-size:16px}.forgot-password-buttons{flex-direction:column}.cancel-btn,.reset-btn{max-width:none}}.app{background-color:var(--slate-50);display:flex;min-height:100vh}.main-content{flex:1 1;overflow-y:auto;padding:2rem}.loading-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:100vh}.loading-spinner{animation:spin 1s linear infinite;border:4px solid #ffffff4d;border-radius:50%;border-top-color:#fff;height:40px;margin-bottom:20px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.loading-container p{font-size:18px;font-weight:500;margin:0}@media (max-width:1200px){.main-content{padding:1.5rem}}@media (max-width:1024px){.main-content{padding:1rem}}@media (max-width:480px){.main-content{padding:.75rem}}.main-content>*{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
/*# sourceMappingURL=main.325af94f.css.map*/