@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Inter:wght@400;500;600&display=swap";:root{--primary:#8b5cf6;--primary-hover:#7c3aed;--secondary:#ec4899;--bg-dark:#0f0c29;--bg-mid:#302b63;--bg-light:#24243e;--glass-bg:#ffffff0d;--glass-border:#ffffff1a;--text-main:#f8fafc;--text-muted:#cbd5e1;--danger:#f43f5e;--danger-hover:#e11d48;--success:#10b981}*{box-sizing:border-box;margin:0;padding:0}body{background:linear-gradient(135deg, var(--bg-dark), var(--bg-mid), var(--bg-light));color:var(--text-main);background-attachment:fixed;min-height:100vh;font-family:Inter,sans-serif;overflow-x:hidden}body:before,body:after{content:"";filter:blur(100px);z-index:-1;opacity:.4;border-radius:50%;width:500px;height:500px;animation:20s ease-in-out infinite alternate float;position:fixed}body:before{background:var(--primary);top:-100px;left:-100px}body:after{background:var(--secondary);animation-delay:-10s;bottom:-100px;right:-100px}@keyframes float{0%{transform:translate(0)scale(1)}to{transform:translate(100px,50px)scale(1.2)}}.dashboard-layout{z-index:1;min-height:100vh;display:flex;position:relative}.main-content{flex-direction:column;flex:1;height:100vh;padding:2rem;display:flex;overflow-y:auto}.sidebar{-webkit-backdrop-filter:blur(16px);border-right:1px solid var(--glass-border);background:#0003;flex-direction:column;width:280px;padding:2rem 1.5rem;display:flex}.sidebar-header h2{background:linear-gradient(90deg,#a78bfa,#f472b6);-webkit-text-fill-color:transparent;text-align:center;letter-spacing:-1px;-webkit-background-clip:text;margin-bottom:2.5rem;font-family:Outfit,sans-serif;font-size:2rem;font-weight:800}.sidebar-nav{flex-direction:column;flex:1;gap:.75rem;display:flex}.nav-item{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:1rem;align-items:center;gap:1rem;width:100%;padding:1rem 1.25rem;font-family:Outfit,sans-serif;font-size:1.1rem;font-weight:500;transition:all .2s;display:flex}.nav-item:hover{color:var(--text-main);background:#ffffff0d}.nav-item.active{color:var(--primary);background:#8b5cf626;border-color:#8b5cf64d}.nav-item.btn-add{background:linear-gradient(135deg, var(--primary), var(--secondary));color:#fff;box-shadow:0 10px 20px -10px var(--primary);border:none;justify-content:center}.nav-item.btn-add:hover{box-shadow:0 15px 25px -10px var(--primary);filter:brightness(1.1);transform:translateY(-2px)}.mt-4{margin-top:1rem}.sidebar-footer{border-top:1px solid var(--glass-border);justify-content:space-between;align-items:center;margin-top:2rem;padding-top:1.5rem;display:flex}.user-profile{align-items:center;gap:.75rem;display:flex}.user-profile .avatar{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;display:flex}.user-info{flex-direction:column;display:flex}.user-info .user-name{font-family:Outfit,sans-serif;font-size:.95rem;font-weight:600}.user-info .user-role{color:var(--primary);font-size:.8rem}.logout-btn{color:var(--danger);cursor:pointer;background:#f43f5e1a;border:1px solid #f43f5e4d;border-radius:.75rem;justify-content:center;align-items:center;width:40px;height:40px;transition:all .2s;display:flex}.logout-btn:hover{background:var(--danger);color:#fff;border-color:var(--danger)}.login-container{z-index:1;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex;position:relative}.header{text-align:center;margin-bottom:2.5rem;font-family:Outfit,sans-serif}.header h1{background:linear-gradient(90deg,#a78bfa,#f472b6);-webkit-text-fill-color:transparent;letter-spacing:-1px;-webkit-background-clip:text;margin-bottom:.5rem;font-size:3.5rem;font-weight:800}.header p{color:var(--text-muted);font-size:1.2rem;font-weight:300}.card{background:var(--glass-bg);-webkit-backdrop-filter:blur(16px);border:1px solid var(--glass-border);border-radius:1.25rem;padding:2.5rem;box-shadow:0 25px 50px -12px #00000080}.login-card{text-align:center;width:100%;max-width:400px}.form-group{text-align:left;margin-bottom:1.5rem}.form-group label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:.6rem;font-size:.9rem;font-weight:500;display:block}.form-control{border:1px solid var(--glass-border);width:100%;color:var(--text-main);background:#0003;border-radius:.75rem;padding:.85rem 1.2rem;font-family:inherit;font-size:1rem;transition:all .2s}.form-control::placeholder{color:#ffffff4d}.form-control:focus{border-color:var(--primary);background:#0000004d;outline:none;box-shadow:0 0 0 4px #8b5cf626}select.form-control option{background:var(--bg-dark);color:var(--text-main)}textarea.form-control{resize:vertical;min-height:100px}.password-input-wrapper{align-items:center;display:flex;position:relative}.password-toggle-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;transition:color .2s;display:flex;position:absolute;right:1rem}.password-toggle-btn:hover{color:var(--primary)}.date-selects{align-items:center;gap:1rem;display:flex}.date-select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-position:right 1rem center;background-repeat:no-repeat;background-size:1em;flex:1;padding-right:2.5rem}.date-separator{color:var(--text-muted);font-weight:500}.btn{cursor:pointer;border:none;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;width:100%;padding:.85rem 1.5rem;font-family:Outfit,sans-serif;font-size:1.05rem;font-weight:600;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--primary), var(--secondary));color:#fff;box-shadow:0 10px 20px -10px var(--primary)}.btn-primary:hover{box-shadow:0 15px 25px -10px var(--primary);filter:brightness(1.1);transform:translateY(-2px)}.btn-icon{border:1px solid var(--glass-border);color:var(--text-main);cursor:pointer;background:#ffffff1a;border-radius:.75rem;justify-content:center;align-items:center;width:40px;height:40px;transition:all .2s;display:flex}.btn-icon:hover{background:#fff3;transform:translateY(-2px)}.btn-icon.danger:hover{background:var(--danger);border-color:var(--danger)}.birthday-list{flex-direction:column;gap:1rem;list-style:none;display:flex}.birthday-item{border:1px solid var(--glass-border);background:#0003;border-radius:1rem;justify-content:space-between;align-items:center;padding:1.25rem;transition:all .3s;display:flex;position:relative;overflow:hidden}.birthday-item:before{content:"";background:linear-gradient(to bottom, var(--primary), var(--secondary));opacity:0;width:4px;height:100%;transition:opacity .3s;position:absolute;top:0;left:0}.birthday-item:hover{background:#0000004d;transform:translate(5px)}.birthday-item:hover:before{opacity:1}.bday-info{flex:1;align-items:center;gap:1.25rem;display:flex}.bday-avatar{object-fit:cover;border:1px solid var(--glass-border);width:56px;height:56px;color:var(--text-main);background:linear-gradient(135deg,#ffffff1a,#ffffff0d);border-radius:1rem;justify-content:center;align-items:center;font-size:1.5rem;font-weight:700;display:flex;box-shadow:0 4px 10px #0003}.bday-details{flex:1}.bday-details h3{margin-bottom:.25rem;font-family:Outfit,sans-serif;font-size:1.25rem;font-weight:600}.bday-details p{color:var(--primary);align-items:center;gap:.4rem;font-size:.95rem;font-weight:500;display:flex}.bday-details .msg-preview{color:var(--text-muted);margin-top:.3rem;font-size:.85rem;font-style:italic;font-weight:400}.bday-actions{gap:.5rem;display:flex}.loading{text-align:center;color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:1rem;padding:3rem;font-family:Outfit,sans-serif;font-size:1.1rem;display:flex}.full-page-calendar{flex-direction:column;flex:1;gap:1.5rem;display:flex}.calendar-header{border:1px solid var(--glass-border);background:#0003;border-radius:1rem;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.calendar-header h3{color:var(--text-main);text-transform:capitalize;margin:0;font-family:Outfit,sans-serif;font-size:1.8rem;font-weight:600}.calendar-grid{flex:1;grid-template-columns:repeat(7,1fr);gap:.75rem;display:grid}.calendar-day-name{text-align:center;color:var(--primary);text-transform:uppercase;padding-bottom:.5rem;font-size:1rem;font-weight:600}.calendar-cell{border:1px solid var(--glass-border);background:#00000026;border-radius:.75rem;flex-direction:column;min-height:120px;padding:.75rem;transition:all .2s;display:flex;position:relative}.calendar-cell.empty{background:0 0;border-color:#0000}.calendar-cell:not(.empty):hover{background:#00000040;border-color:#fff3}.calendar-cell.today{border-color:var(--primary);background:#8b5cf61a}.day-number{color:var(--text-muted);margin-bottom:.5rem;font-size:1rem;font-weight:600}.calendar-cell.today .day-number{color:var(--primary)}.bday-pills{flex-direction:column;flex:1;gap:.4rem;display:flex}.bday-pill{cursor:pointer;background:linear-gradient(135deg,#8b5cf633,#ec489933);border:1px solid #ffffff1a;border-radius:.5rem;align-items:center;gap:.5rem;padding:.35rem .5rem;transition:all .2s;display:flex;overflow:hidden}.bday-pill:hover{background:linear-gradient(135deg,#8b5cf666,#ec489966);border-color:#ffffff4d;transform:translateY(-1px)scale(1.02);box-shadow:0 4px 10px #0003}.pill-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:24px;height:24px}.pill-avatar.text-avatar{background:var(--primary);color:#fff;justify-content:center;align-items:center;font-size:.8rem;font-weight:700;display:flex}.pill-name{white-space:nowrap;text-overflow:ellipsis;color:var(--text-main);font-size:.85rem;font-weight:500;overflow:hidden}.modal-overlay{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);z-index:1000;background:#0009;justify-content:center;align-items:center;padding:1rem;animation:.2s fadeIn;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-dark);border:1px solid var(--glass-border);border-radius:1.5rem;width:100%;max-width:500px;max-height:90vh;padding:2.5rem;animation:.3s cubic-bezier(.16,1,.3,1) slideUp;overflow-y:auto;box-shadow:0 25px 50px -12px #000c}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1.5rem;display:flex}.modal-header h2{margin:0;font-family:Outfit,sans-serif;font-size:1.8rem}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:.5rem;transition:color .2s}.modal-close:hover{color:var(--text-main)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#0003}::-webkit-scrollbar-thumb{background:#fff3;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ffffff4d}
