:root{font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;color:#0f172a;background:#f8fafc;line-height:1.5;font-weight:400;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#f8fafc;color:#0f172a}#root{min-height:100vh}.app-shell{min-height:100vh;padding:1rem;background:#f8fafc;display:flex;flex-direction:column;gap:2rem}@media(min-width:768px){.app-shell{padding:1.5rem}}.app-shell.loading{align-items:center;justify-content:center}.app-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#fff;padding:1.5rem;border-radius:2rem;box-shadow:0 1px 3px #0000000d;border:1px solid rgba(226,232,240,.5)}.app-header strong{display:block;font-size:1.25rem;font-weight:900;color:#0f172a;letter-spacing:-.02em}.app-header p{margin:0;color:#64748b;font-size:.875rem;font-weight:500}.header-actions{display:flex;align-items:center;gap:.75rem}.header-actions button{display:flex;align-items:center;gap:.5rem}.header-actions button svg{flex-shrink:0}.sync-message-header{margin:0 1.5rem;padding:1rem 1.5rem;border-radius:1rem;font-weight:600;font-size:.875rem;text-align:center;animation:slideDown .3s ease}.sync-message-header.success{background:#d1fae5;color:#065f46;border:1px solid #6ee7b7}.sync-message-header.error{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.ghost-button{border:2px solid #e2e8f0;background:#f8fafc;padding:.625rem 1.25rem;border-radius:1rem;cursor:pointer;font-weight:700;font-size:.875rem;transition:all .2s ease;color:#64748b}.ghost-button:hover{border-color:#cbd5e1;background:#fff;color:#0f172a;transform:translateY(-1px);box-shadow:0 4px 8px #0000000d}.planner{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:1.5rem;max-width:1600px;margin:0 auto}.planner-calendar{background:#fff;border-radius:2rem;padding:2rem;box-shadow:0 1px 3px #0000000d;border:1px solid rgba(226,232,240,.5)}.planner-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem;gap:1rem;flex-wrap:wrap}.planner-header button{border-radius:1rem;border:2px solid #e2e8f0;background:#f8fafc;padding:.75rem 1.25rem;cursor:pointer;font-weight:700;font-size:.875rem;transition:all .2s ease;color:#64748b}.planner-header button:hover{background:#fff;border-color:#cbd5e1;color:#0f172a;transform:translateY(-1px);box-shadow:0 4px 8px #0000000d}.planner-header h2{margin:0;font-size:2.5rem;font-weight:900;color:#4f46e5;letter-spacing:-.03em}.planner-subtitle{margin:0;color:#64748b;font-size:.625rem;text-transform:uppercase;letter-spacing:.15em;font-weight:900}.planner-sidebar{background:#fff;color:#0f172a;padding:0;border-radius:2rem;box-shadow:0 1px 3px #0000000d;border:1px solid rgba(226,232,240,.5);display:flex;flex-direction:column;gap:0;overflow:hidden}.event-form{background:#f8fafc;padding:1.5rem;border-radius:0;display:flex;flex-direction:column;gap:1rem;border-bottom:1px solid #e2e8f0}.event-form h3{margin:0 0 .5rem;font-size:1rem;font-weight:900;color:#0f172a;letter-spacing:-.02em}.event-form label{display:flex;flex-direction:column;gap:.5rem;font-size:.625rem;color:#64748b;font-weight:900;text-transform:uppercase;letter-spacing:.1em}.event-form label span{display:block}.event-form input{border-radius:1rem;border:2px solid #e2e8f0;padding:.75rem 1rem;font-size:.875rem;background:#fff;color:#0f172a;font-weight:600;transition:all .2s ease}.event-form input:focus{outline:none;border-color:#4f46e5;background:#fff;box-shadow:0 0 0 3px #4f46e51a}.event-form button{border-radius:1rem;border:none;background:#4f46e5;color:#fff;padding:1rem;font-weight:900;font-size:.875rem;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 4px 12px #4f46e533}.event-form button:hover:not(:disabled){background:#4338ca;transform:translateY(-2px);box-shadow:0 8px 20px #4f46e54d}.event-form button:disabled{opacity:.5;cursor:not-allowed}.form-error{color:#ef4444;font-size:.75rem;margin:0;font-weight:600;padding:.5rem;background:#fef2f2;border-radius:.5rem;border-left:3px solid #ef4444}.success-message{color:#22c55e;font-size:.75rem;margin:0;font-weight:600;padding:.5rem;background:#f0fdf4;border-radius:.5rem;border-left:3px solid #22c55e}.event-time-info,.event-type-info{padding:.75rem;background:#f1f5f9;border-radius:.75rem;font-size:.875rem;color:#475569;margin-bottom:.5rem}.event-time-info strong,.event-type-info strong{color:#0f172a;font-weight:700;margin-right:.5rem}.year-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.25rem}.month-card{border:1px solid #e2e8f0;border-radius:1.5rem;padding:1rem;min-height:300px;background:#fff;transition:all .2s ease}.month-card:hover{border-color:#cbd5e1;box-shadow:0 4px 12px #0000000d;transform:translateY(-2px)}.month-card header h4{margin:0;font-size:.875rem;font-weight:900;color:#0f172a;letter-spacing:-.01em}.weekday-names{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));margin-top:.75rem;color:#94a3b8;font-size:.625rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em;text-align:center}.weeks{margin-top:.75rem;display:flex;flex-direction:column;gap:.25rem}.week-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.25rem}.day-cell{border:none;background:#f8fafc;border-radius:.75rem;display:flex;flex-direction:column;gap:.25rem;padding:.5rem .25rem;cursor:pointer;min-height:70px;transition:all .2s ease;position:relative}.day-cell:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 4px 12px #00000014;background:#fff}.day-cell:disabled{cursor:default;opacity:.3}.day-cell.muted{opacity:.4}.day-cell.weekend{background:#fef3c7}.day-cell.holiday{background:#fecaca}.day-cell.selected{background:#4f46e5;color:#fff;box-shadow:0 4px 16px #4f46e566;transform:scale(1.05)}.day-cell.selected .day-event-pill{background:#fff3;color:#fff;font-weight:700}.day-number{font-weight:900;font-size:.75rem;text-align:center;color:inherit}.day-events{display:flex;flex-direction:column;gap:.15rem}.day-event-pill{font-size:.5rem;background:#e0e7ff;color:#4f46e5;border-radius:.375rem;padding:.15rem .35rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700;text-align:center;border:1px solid #c7d2fe}.selected-events{background:#fff;padding:1.5rem;border-radius:0;display:flex;flex-direction:column;gap:1rem}.selected-events-header h3{margin:0;font-size:.875rem;font-weight:900;color:#0f172a;letter-spacing:-.01em}.selected-events-header p{margin:.25rem 0 0;color:#64748b;font-size:.75rem;font-weight:600}.event-list{display:flex;flex-direction:column;gap:.75rem}.event-card{border:2px solid #e2e8f0;border-radius:1.25rem;padding:1rem;background:#f8fafc;transition:all .2s ease}.event-card:hover{border-color:#cbd5e1;background:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #0000000d}.event-card strong{font-size:.875rem;font-weight:900;color:#0f172a;display:block}.event-card p{margin:.5rem 0 0;font-size:.75rem;color:#64748b;font-weight:600}.event-card-actions{margin-top:.75rem;display:flex;align-items:center;justify-content:space-between;gap:.5rem}.event-card-actions button{border-radius:.75rem;border:none;padding:.625rem 1rem;background:#10b981;color:#fff;font-weight:900;font-size:.75rem;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 2px 8px #10b98133}.event-card-actions button:hover:not(:disabled){background:#059669;transform:translateY(-2px);box-shadow:0 4px 12px #10b9814d}.event-card-actions button:disabled{opacity:.5;cursor:not-allowed}.status-badge{padding:.375rem .75rem;border-radius:.5rem;font-size:.625rem;text-transform:uppercase;letter-spacing:.1em;font-weight:900;border:2px solid}.status-badge.pending{background:#fef3c7;color:#d97706;border-color:#fde68a}.status-badge.approved{background:#d1fae5;color:#059669;border-color:#a7f3d0}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f8fafc;padding:1rem}.auth-card{background:#fff;border-radius:2rem;padding:2.5rem;width:min(420px,100%);display:flex;flex-direction:column;gap:1.5rem;box-shadow:0 4px 20px #00000014;border:1px solid #e2e8f0}.auth-card h1{margin:0;font-size:1.75rem;font-weight:900;color:#0f172a;letter-spacing:-.03em}.auth-card label{display:flex;flex-direction:column;gap:.5rem;color:#64748b;font-weight:900;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em}.auth-card input{border-radius:1rem;border:2px solid #e2e8f0;padding:.875rem 1rem;font-size:.875rem;font-weight:600;transition:all .2s ease}.auth-card input:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.auth-card button{border-radius:1rem;border:none;padding:1rem;font-size:.875rem;font-weight:900;cursor:pointer;background:#4f46e5;color:#fff;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 4px 12px #4f46e533}.auth-card button:hover{background:#4338ca;transform:translateY(-2px);box-shadow:0 8px 20px #4f46e54d}.text-button{background:transparent;border:none;color:#4f46e5;font-weight:700;cursor:pointer;text-decoration:underline;font-size:.875rem}.text-button:hover{color:#4338ca}.auth-divider{display:flex;align-items:center;text-align:center;margin:.5rem 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;border-bottom:1px solid #e2e8f0}.auth-divider span{padding:0 1rem;color:#94a3b8;font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.google-signin-button{display:flex;align-items:center;justify-content:center;gap:.75rem;background:#fff!important;color:#1f2937!important;border:2px solid #e2e8f0!important;box-shadow:0 2px 8px #0000000d!important}.google-signin-button:hover{background:#f8fafc!important;border-color:#cbd5e1!important;box-shadow:0 4px 12px #0000001a!important}.google-signin-button:disabled{opacity:.6;cursor:not-allowed;transform:none!important}.muted{color:#94a3b8;font-size:.875rem}@media(max-width:1200px){.planner{grid-template-columns:1fr}.planner-sidebar{position:sticky;top:1rem;z-index:10}.year-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.planner-with-sidebar{grid-template-columns:280px 1fr;gap:1rem}.month-events-sidebar{padding:1rem}}@media(max-width:1024px){.planner-with-sidebar{grid-template-columns:1fr}.month-events-sidebar{position:static;max-height:none;order:2}.planner-single-month{order:1}.planner-with-sidebar{display:flex;flex-direction:column;gap:0}.planner-single-month{order:1;margin-bottom:0;padding:.5rem!important}.mobile-month-events{order:2;background:#fff;border-radius:1.5rem;padding:1rem;margin-top:1rem}.mobile-month-events h3{font-size:1.125rem;font-weight:900;color:#0f172a;margin:0 0 1rem}.mobile-events-list{display:flex;flex-direction:column;gap:.75rem}.mobile-event-item{background:#e0e7ff;border:2px solid #c7d2fe;border-radius:1rem;padding:.875rem;min-height:50px;display:flex;align-items:center;gap:.75rem;transition:all .2s ease;cursor:pointer}.mobile-event-item:active{transform:scale(.98);background:#c7d2fe}.mobile-event-date{font-size:.75rem;font-weight:900;color:#64748b;min-width:45px;text-align:center}.mobile-event-title{font-size:.9375rem;font-weight:700;color:#4f46e5}.mobile-no-events{text-align:center;color:#94a3b8;font-size:.9375rem;padding:2rem 0}.header-actions{flex-direction:row;gap:.5rem;width:100%;justify-content:center}.header-actions button{flex:1;min-width:0;min-height:44px;font-size:.875rem;padding:.625rem .75rem}}@media(min-width:769px){.planner-navigation{flex-direction:row!important;align-items:center;justify-content:space-between}.nav-year,.nav-month{flex:0 0 auto}}@media(max-width:768px){.app-shell{gap:.5rem;padding:0}.app-header{flex-direction:column;align-items:stretch;padding:.75rem;gap:.75rem;border-radius:1.25rem}.app-header>div:first-child{text-align:center}.app-header strong{font-size:1.125rem}.app-header p{font-size:.8125rem}.header-actions button{padding:.625rem;min-width:44px;justify-content:center}.header-actions button svg{margin:0!important}.icon-button-label,.header-actions button span{display:none!important}.planner-navigation{display:flex!important;flex-wrap:wrap!important;gap:.5rem!important;align-items:stretch!important;justify-content:flex-start!important}.nav-year{flex:1 1 55%;order:1;display:flex;justify-content:space-between;align-items:center;min-width:0}.nav-year button{display:flex;justify-content:center;align-items:center;flex-shrink:0}.nav-year .current-year{text-align:center;flex:1}.btn-today{flex:0 1 auto;order:2;display:flex;justify-content:center;align-items:center;text-align:center;min-width:70px;padding:.375rem .75rem;font-size:.75rem}.nav-month{flex:1 1 100%;order:3;display:flex;justify-content:space-between;align-items:center}.nav-month button{display:flex;justify-content:center;align-items:center;flex-shrink:0}.nav-month .current-month{text-align:center;flex:1}.planner-calendar{padding:.5rem;border-radius:1.25rem}.planner-header{flex-direction:column;gap:.75rem;padding:.75rem}.planner-header h2{font-size:1.25rem;text-align:center}.planner-subtitle{font-size:.5625rem}.year-grid{grid-template-columns:1fr}.planner-navigation button{min-height:40px;font-size:.8125rem}.nav-year button,.nav-month button{padding:.375rem .625rem}.current-year,.current-month{font-size:.8125rem;min-width:60px}.year-selector button{font-size:1.25rem;min-width:44px;min-height:44px}.month-grid{gap:.75rem}.modal-content{width:95%;padding:1rem;max-height:95vh;border-radius:1.5rem}.modal-header h2{font-size:1.25rem}.modal-close{width:40px;height:40px;font-size:1.5rem}.confirm-modal{width:95%;padding:1.5rem}.confirm-icon{width:56px;height:56px}.confirm-title{font-size:1.125rem}.calendar-day{min-height:80px;max-height:none;padding:.25rem!important;border-radius:.625rem;display:flex;flex-direction:column}.calendar-day.expanded{min-height:auto;max-height:300px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;z-index:1000}.day-header{flex-direction:column;align-items:center;justify-content:center;gap:.1rem;min-height:auto;margin-bottom:.125rem}.holiday-label{display:none}.day-num{width:24px;height:24px;font-size:.8125rem;font-weight:700;border-radius:50%;display:flex;align-items:center;justify-content:center}.day-more-events{font-size:.65rem;padding:.2rem .4rem}.day-events-list{margin-top:.25rem;gap:.2rem;overflow:hidden;width:100%}.event-item{padding:.3rem .4rem;font-size:.65rem;border-radius:.4rem}.event-title{font-size:.625rem}.calendar-day:not(.expanded) .event-item{font-size:.65rem;padding:.3rem;min-height:36px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:.4rem;width:100%;box-sizing:border-box}.calendar-day:not(.expanded) .event-item .event-title{display:block;font-size:.625rem;line-height:1.2}.calendar-day:not(.expanded) .day-events-list{flex-direction:column;gap:.2rem;flex-wrap:nowrap;width:100%}.weekday-label{font-size:.625rem;padding:.25rem 0}.modal-form{gap:1rem}.modal-form label{font-size:.7rem}.modal-form input,.modal-form select{min-height:44px;font-size:1rem;padding:.75rem}.form-row{flex-direction:column;gap:1rem}.modal-actions{flex-direction:column-reverse;gap:.75rem}.modal-actions button{width:100%;min-height:48px;font-size:1rem}}.planner-with-sidebar{max-width:1800px;margin:0 auto;display:flex;flex-direction:column;gap:1rem}@media(min-width:1025px){.planner-with-sidebar{display:grid;grid-template-columns:1fr 320px;gap:1.5rem;align-items:start}}.planner-single-month{background:#fff;border-radius:2rem;padding:2rem;box-shadow:0 1px 3px #0000000d;border:1px solid rgba(226,232,240,.5)}.planner-navigation{display:flex;align-items:center;justify-content:space-between;margin-bottom:2rem;gap:2rem;flex-wrap:wrap}.nav-year,.nav-month{display:flex;align-items:center;gap:.5rem;background:#f8fafc;padding:.375rem .75rem;border-radius:1rem;border:2px solid #e2e8f0}.nav-year button,.nav-month button{border:none;background:transparent;cursor:pointer;font-size:1rem;font-weight:900;color:#64748b;padding:.125rem .5rem;border-radius:.5rem;transition:all .2s ease}.nav-year button:hover,.nav-month button:hover{background:#fff;color:#4f46e5;transform:scale(1.1)}.current-year{font-size:1rem;font-weight:900;color:#4f46e5;min-width:60px;text-align:center;letter-spacing:-.02em}.current-month{font-size:.875rem;font-weight:900;color:#0f172a;min-width:90px;text-align:center;letter-spacing:-.01em}.btn-today{border:2px solid #4f46e5;background:#4f46e5;color:#fff;padding:.5rem 1rem;border-radius:1rem;cursor:pointer;font-weight:900;font-size:.75rem;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 4px 12px #4f46e533}.btn-today:hover{background:#4338ca;border-color:#4338ca;transform:translateY(-2px);box-shadow:0 8px 20px #4f46e54d}.btn-sync{border:2px solid #059669;background:#059669;color:#fff;padding:.625rem 1.5rem;border-radius:1.25rem;cursor:pointer;font-weight:900;font-size:.875rem;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 4px 12px #05966933}.btn-sync:hover:not(:disabled){background:#047857;border-color:#047857;transform:translateY(-2px);box-shadow:0 8px 20px #0596694d}.btn-sync:disabled{opacity:.6;cursor:not-allowed}.sync-message{padding:1rem 1.5rem;border-radius:1rem;margin-bottom:1rem;font-weight:700;font-size:.875rem;animation:slideIn .3s ease}.sync-message.success{background:#d1fae5;color:#065f46;border:2px solid #059669}.sync-message.error{background:#fee2e2;color:#991b1b;border:2px solid #dc2626}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.month-calendar{width:100%}.weekday-header{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;margin-bottom:.75rem;padding:0 .5rem}@media(max-width:768px){.weekday-header{gap:.25rem;margin-bottom:.375rem;padding:0}}.weekday-label{text-align:center;font-size:.75rem;font-weight:900;color:#64748b;text-transform:uppercase;letter-spacing:.05em;padding:.5rem}.weekday-label.weekend-label{color:#f59e0b}.calendar-grid{display:flex;flex-direction:column;gap:.5rem}@media(max-width:768px){.calendar-grid{gap:.25rem}}.calendar-week{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem}@media(max-width:768px){.calendar-week{gap:.25rem}}.calendar-day{position:relative;min-height:110px;max-height:110px;background:#f8fafc;border-radius:1.25rem;padding:.75rem;cursor:pointer;transition:all .2s ease;border:2px solid transparent;display:flex;flex-direction:column;gap:.5rem;overflow:hidden}.calendar-day.expanded{z-index:100;min-height:auto;max-height:400px;overflow-y:auto;box-shadow:0 20px 60px #0003;border-color:#4f46e5;cursor:default;background:#fff;position:relative}.calendar-day.expanded .day-events-list{overflow:visible}.calendar-day.expanded::-webkit-scrollbar{width:6px}.calendar-day.expanded::-webkit-scrollbar-track{background:#f1f5f9;border-radius:0 1.25rem 1.25rem 0}.calendar-day.expanded::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}.calendar-day.expanded::-webkit-scrollbar-thumb:hover{background:#94a3b8}.calendar-day:hover{background:#fff;border-color:#cbd5e1;transform:translateY(-3px);box-shadow:0 8px 20px #00000014}.calendar-day.other-month{opacity:.3;cursor:default}.calendar-day.other-month:hover{transform:none;box-shadow:none;border-color:transparent}.calendar-day.weekend{background:#fef3c7}.calendar-day.holiday{background:#fecaca}.calendar-day.today{border-color:#4f46e5;background:#eef2ff}.day-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.25rem;gap:.25rem;min-height:32px}.day-num{font-size:1rem;font-weight:900;color:#0f172a;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:.75rem;transition:all .2s ease;flex-shrink:0}.calendar-day.today .day-num{background:#4f46e5;color:#fff;box-shadow:0 2px 8px #4f46e54d}.holiday-label{font-size:.625rem;font-weight:700;color:#dc2626;background:transparent;padding:0;border-radius:0;letter-spacing:0;text-align:right;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-events-list{display:flex;flex-direction:column;gap:.375rem;flex:1;overflow:hidden;min-height:0}.day-more-events{font-size:.7rem;color:#64748b;font-weight:700;cursor:pointer;padding:.25rem .5rem;text-align:center;background:#f8fafc;border:1px solid #cbd5e1;border-radius:.5rem;transition:all .2s ease;margin-left:auto;line-height:1}.day-more-events:hover{color:#4f46e5;background:#e0e7ff;border-color:#4f46e5}.event-item{border:none;background:#e0e7ff;border-radius:.625rem;padding:.5rem .625rem;cursor:pointer;transition:all .2s ease;text-align:left;border:2px solid #c7d2fe;flex-shrink:0}.event-item:hover{background:#c7d2fe;transform:scale(1.02);box-shadow:0 2px 8px #4f46e533}.event-item.approved{background:#d1fae5;border-color:#a7f3d0}.event-item.approved:hover{background:#a7f3d0}.event-title{font-size:.75rem;font-weight:700;color:#4f46e5;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-item.approved .event-title{color:#059669}.event-item.dragging{opacity:.4;cursor:grabbing}.event-item[draggable=true]{cursor:grab}.calendar-day.drag-over{background:#e0e7ff;border-color:#4f46e5;transform:scale(1.02);box-shadow:0 4px 16px #4f46e54d}.modal-overlay{position:fixed;inset:0;background:#0f172ab3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:#fff;border-radius:2rem;padding:2rem;width:min(500px,100%);max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;border:1px solid #e2e8f0}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem}.modal-header h2{margin:0;font-size:1.5rem;font-weight:900;color:#0f172a;letter-spacing:-.02em}.modal-close{border:none;background:#f8fafc;width:36px;height:36px;border-radius:.75rem;cursor:pointer;font-size:1.25rem;color:#64748b;transition:all .2s ease;display:flex;align-items:center;justify-content:center;font-weight:700}.modal-close:hover{background:#ef4444;color:#fff;transform:rotate(90deg)}.modal-form{display:flex;flex-direction:column;gap:1.25rem}.modal-form label{display:flex;flex-direction:column;gap:.5rem}.modal-form label span{font-size:.75rem;font-weight:900;color:#64748b;text-transform:uppercase;letter-spacing:.1em}.modal-form input{border-radius:1rem;border:2px solid #e2e8f0;padding:.875rem 1rem;font-size:.875rem;font-weight:600;transition:all .2s ease}.modal-form input:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.modal-form input:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.modal-form input[type=number]{-moz-appearance:textfield}.modal-form input[type=number]::-webkit-inner-spin-button,.modal-form input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.modal-form input[type=number]:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed}.modal-form select{border-radius:1rem;border:2px solid #e2e8f0;padding:.875rem 1rem;font-size:.875rem;font-weight:600;transition:all .2s ease;background:#fff;cursor:pointer}.modal-form select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.modal-form select:disabled{background:#f8fafc;color:#94a3b8;cursor:not-allowed;opacity:.7}.checkbox-label{flex-direction:row!important;align-items:center;gap:.75rem!important;cursor:pointer;padding:.5rem 0}.checkbox-label input[type=checkbox]{width:20px;height:20px;cursor:pointer;accent-color:#4f46e5}.checkbox-label input[type=checkbox]:disabled{cursor:not-allowed;opacity:.6}.checkbox-label:has(input:disabled){cursor:not-allowed;opacity:.7}.checkbox-label span{font-size:.875rem!important;font-weight:700!important;color:#0f172a!important;text-transform:none!important;letter-spacing:0!important}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;margin-top:.5rem}.btn-cancel,.btn-delete{border:2px solid #e2e8f0;background:#f8fafc;padding:.75rem 1.25rem;border-radius:1rem;font-weight:900;font-size:.875rem;cursor:pointer;transition:all .2s ease;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.btn-cancel:hover{background:#fff;border-color:#cbd5e1;color:#0f172a}.btn-delete{border-color:#fecaca;background:#fef2f2;color:#dc2626}.btn-delete:hover{background:#dc2626;border-color:#dc2626;color:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #dc26264d}.btn-save,.btn-approve{border:none;background:#4f46e5;color:#fff;padding:.75rem 1.5rem;border-radius:1rem;font-weight:900;font-size:.875rem;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 4px 12px #4f46e533}.btn-save:hover:not(:disabled),.btn-approve:hover:not(:disabled){background:#4338ca;transform:translateY(-2px);box-shadow:0 8px 20px #4f46e54d}.btn-save:disabled,.btn-approve:disabled{opacity:.5;cursor:not-allowed}.btn-approve{background:#10b981;box-shadow:0 4px 12px #10b98133}.btn-approve:hover:not(:disabled){background:#059669;box-shadow:0 8px 20px #10b9814d}.btn-unapprove{background:#f59e0b;box-shadow:0 4px 12px #f59e0b33;border:none;color:#fff;padding:.75rem 1.5rem;border-radius:1rem;font-weight:900;font-size:.875rem;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em}.btn-unapprove:hover:not(:disabled){background:#d97706;transform:translateY(-2px);box-shadow:0 8px 20px #f59e0b4d}.btn-unapprove:disabled{opacity:.5;cursor:not-allowed}.status-approved{color:#059669;font-weight:900;font-size:.875rem;padding:.75rem 1.5rem;background:#d1fae5;border-radius:1rem;border:2px solid #a7f3d0;text-transform:uppercase;letter-spacing:.05em}.confirm-modal{background:#fff;border-radius:2rem;padding:2.5rem;width:min(450px,100%);box-shadow:0 25px 70px #00000059;border:1px solid #e2e8f0;display:flex;flex-direction:column;align-items:center;gap:1.5rem;animation:confirmModalIn .3s ease}@keyframes confirmModalIn{0%{opacity:0;transform:scale(.9) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.confirm-icon{width:80px;height:80px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fef2f2;color:#dc2626;border:3px solid #fecaca}.confirm-title{margin:0;font-size:1.5rem;font-weight:900;color:#0f172a;letter-spacing:-.02em;text-align:center}.confirm-message{margin:0;font-size:.9375rem;color:#64748b;text-align:center;line-height:1.6;max-width:350px}.confirm-actions{display:flex;gap:1rem;width:100%;margin-top:.5rem}.btn-confirm-cancel{flex:1;border:2px solid #e2e8f0;background:#f8fafc;padding:.875rem 1.5rem;border-radius:1.25rem;font-weight:900;font-size:.875rem;cursor:pointer;transition:all .2s ease;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.btn-confirm-cancel:hover{background:#fff;border-color:#cbd5e1;color:#0f172a;transform:translateY(-2px);box-shadow:0 4px 12px #0000000d}.btn-confirm{flex:1;border:none;background:#4f46e5;color:#fff;padding:.875rem 1.5rem;border-radius:1.25rem;font-weight:900;font-size:.875rem;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 4px 12px #4f46e533}.btn-confirm:hover{background:#4338ca;transform:translateY(-2px);box-shadow:0 8px 20px #4f46e54d}.btn-confirm-danger{background:#dc2626;box-shadow:0 4px 12px #dc262633}.btn-confirm-danger:hover{background:#b91c1c;box-shadow:0 8px 20px #dc26264d}.month-events-sidebar{background:#fff;border-radius:2rem;padding:1.5rem;box-shadow:0 1px 3px #0000000d;border:1px solid rgba(226,232,240,.5);display:flex;flex-direction:column;gap:2rem;position:sticky;top:1rem;max-height:calc(100vh - 2rem);overflow-y:hidden}.sidebar-section{display:flex;flex-direction:column;gap:1rem}.sidebar-section:first-child{flex:1;min-height:0;max-height:60vh;overflow-y:auto;padding-right:.5rem}.sidebar-section:first-child::-webkit-scrollbar{width:6px}.sidebar-section:first-child::-webkit-scrollbar-track{background:#f1f5f9;border-radius:10px}.sidebar-section:first-child::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:10px}.sidebar-section:first-child::-webkit-scrollbar-thumb:hover{background:#94a3b8}.sidebar-title{margin:0;font-size:1rem;font-weight:900;color:#0f172a;letter-spacing:-.02em;padding-bottom:.75rem;border-bottom:2px solid #e2e8f0}.events-section{display:flex;flex-direction:column;gap:.75rem}.events-section-title{margin:0;font-size:.75rem;font-weight:900;color:#64748b;text-transform:uppercase;letter-spacing:.1em;display:flex;align-items:center;gap:.5rem}.events-section-title.pending{color:#f59e0b}.events-section-title.approved{color:#059669}.sidebar-events-list{display:flex;flex-direction:column;gap:.5rem}.sidebar-event-item{border:none;background:#f8fafc;border-radius:1rem;padding:.75rem 1rem;cursor:pointer;transition:all .2s ease;text-align:left;display:flex;align-items:center;gap:.75rem;border:2px solid transparent}.sidebar-event-item:hover{background:#fff;border-color:#cbd5e1;transform:translate(4px);box-shadow:0 2px 8px #0000000d}.sidebar-event-item.pending{border-left:3px solid #f59e0b}.sidebar-event-item.approved{border-left:3px solid #059669}.event-indicator{width:8px;height:8px;border-radius:50%;flex-shrink:0}.event-indicator.pending{background:#f59e0b;box-shadow:0 0 0 3px #f59e0b33}.event-indicator.approved{background:#059669;box-shadow:0 0 0 3px #05966933}.event-info{display:flex;flex-direction:column;gap:.25rem;flex:1;min-width:0}.event-name{font-size:.875rem;font-weight:700;color:#0f172a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-dates{font-size:.75rem;font-weight:600;color:#64748b}.no-events{font-size:.875rem;color:#94a3b8;font-style:italic;margin:0;padding:.5rem;text-align:center}.mini-calendar{background:#f8fafc;border-radius:1rem;padding:1rem;border:1px solid #e2e8f0}.mini-calendar-header{margin-bottom:.75rem}.mini-calendar-header h4{margin:0;font-size:.875rem;font-weight:900;color:#0f172a;text-align:center;letter-spacing:-.01em}.mini-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;margin-bottom:.5rem}.mini-weekday{text-align:center;font-size:.625rem;font-weight:900;color:#64748b;text-transform:uppercase;padding:.25rem}.mini-weekday.weekend{color:#f59e0b}.mini-calendar-grid{display:flex;flex-direction:column;gap:.25rem}.mini-week{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem}.mini-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.125rem;font-size:.75rem;font-weight:700;color:#0f172a;border-radius:.5rem;background:#fff;transition:all .2s ease;position:relative}.mini-day-number{line-height:1}.mini-day-indicators{display:flex;gap:.125rem;align-items:center;justify-content:center}.mini-indicator{width:4px;height:4px;border-radius:50%;display:block}.mini-indicator.pending{background:#fbbf24}.mini-indicator.approved{background:#4ade80}.mini-day.other-month{opacity:.3}.mini-day.weekend{background:#fef3c7}.mini-day.holiday{background:#fecaca;color:#dc2626}.mini-day.today{background:#4f46e5;color:#fff;box-shadow:0 2px 6px #4f46e54d}.mini-day.today .mini-indicator.pending{background:#fef3c7}.mini-day.today .mini-indicator.approved{background:#d1fae5}.user-management-modal{width:min(800px,95%);max-height:85vh}.icon-button{padding:.5rem!important;display:flex!important;align-items:center!important;justify-content:center!important}.icon-button svg{display:block}.icon-button-label{display:none}.btn-add-user{width:100%;background:#4f46e5;color:#fff;border:none;border-radius:1rem;padding:.875rem;font-size:.875rem;font-weight:900;cursor:pointer;transition:all .2s ease;margin-bottom:1.5rem;text-transform:uppercase;letter-spacing:.05em}.btn-add-user:hover{background:#4338ca;transform:translateY(-2px);box-shadow:0 8px 20px #4f46e54d}.add-user-form{background:#f8fafc;border-radius:1.5rem;padding:1.5rem;margin-bottom:2rem;border:2px solid #e2e8f0}.add-user-form h3{margin:0 0 1rem;font-size:1.125rem;font-weight:900;color:#0f172a}.add-user-form label{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem;color:#64748b;font-weight:900;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em}.add-user-form input,.add-user-form select{border-radius:1rem;border:2px solid #e2e8f0;padding:.875rem 1rem;font-size:.875rem;font-weight:600;transition:all .2s ease;background:#fff}.add-user-form input:focus,.add-user-form select:focus{outline:none;border-color:#4f46e5;box-shadow:0 0 0 3px #4f46e51a}.form-actions{display:flex;gap:1rem;justify-content:flex-end;margin-top:1.5rem}.btn-cancel{background:transparent;border:2px solid #e2e8f0;color:#64748b;border-radius:1rem;padding:.875rem 1.5rem;font-size:.875rem;font-weight:900;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em}.btn-cancel:hover{border-color:#cbd5e1;background:#f8fafc}.btn-save{background:#4f46e5;color:#fff;border:none;border-radius:1rem;padding:.875rem 1.5rem;font-size:.875rem;font-weight:900;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 4px 12px #4f46e533}.btn-save:hover{background:#4338ca;transform:translateY(-2px);box-shadow:0 8px 20px #4f46e54d}.btn-save:disabled{opacity:.6;cursor:not-allowed;transform:none}.users-list{margin-top:2rem}.users-list h3{margin:0 0 1rem;font-size:1.125rem;font-weight:900;color:#0f172a}.loading-text,.empty-text{text-align:center;color:#94a3b8;padding:2rem;font-size:.875rem}.users-table{width:100%;border-collapse:collapse;background:#fff;border-radius:1rem;overflow:hidden;border:2px solid #e2e8f0}.users-table thead{background:#f8fafc}.users-table th{padding:1rem;text-align:left;font-size:.75rem;font-weight:900;color:#64748b;text-transform:uppercase;letter-spacing:.1em;border-bottom:2px solid #e2e8f0}.users-table td{padding:1rem;font-size:.875rem;color:#0f172a;border-bottom:1px solid #f1f5f9}.users-table tbody tr:last-child td{border-bottom:none}.users-table tbody tr:hover{background:#f8fafc}.email-cell{font-weight:600;color:#4f46e5}.notes-cell{color:#64748b;font-size:.8125rem}.role-badge{display:inline-block;padding:.375rem .875rem;border-radius:.625rem;font-size:.75rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em}.role-admin{background:#fef3c7;color:#92400e;border:2px solid #fcd34d}.role-editor{background:#dbeafe;color:#1e40af;border:2px solid #93c5fd}.role-viewer{background:#f1f5f9;color:#475569;border:2px solid #cbd5e1}.role-select{padding:.5rem .75rem;border-radius:.625rem;font-size:.75rem;font-weight:900;cursor:pointer;transition:all .2s ease;border:2px solid;background:#fff}.role-select.role-admin{color:#92400e;border-color:#fcd34d;background:#fef3c7}.role-select.role-admin:hover{background:#fde68a}.role-select.role-editor{color:#1e40af;border-color:#93c5fd;background:#dbeafe}.role-select.role-editor:hover{background:#bfdbfe}.role-select.role-viewer{color:#475569;border-color:#cbd5e1;background:#f1f5f9}.role-select.role-viewer:hover{background:#e2e8f0}.role-select:focus{outline:none;box-shadow:0 0 0 3px #4f46e51a}.btn-delete-small{background:transparent;border:2px solid #fee2e2;color:#ef4444;border-radius:.75rem;padding:.5rem 1rem;font-size:.75rem;font-weight:900;cursor:pointer;transition:all .2s ease;text-transform:uppercase;letter-spacing:.05em}.btn-delete-small:hover{background:#ef4444;color:#fff;border-color:#ef4444}.success-message{background:#d1fae5;border:2px solid #a7f3d0;color:#059669;padding:1rem;border-radius:1rem;margin-bottom:1rem;font-size:.875rem;font-weight:700}@media(max-width:768px){.auth-page{padding:1rem}.auth-card{padding:1.5rem;border-radius:1.5rem}.auth-card h1{font-size:1.5rem}.auth-card p{font-size:.875rem}.auth-card input{min-height:48px;font-size:1rem}.auth-card button{min-height:50px;font-size:1rem}.google-signin-button{min-height:50px}.google-signin-button svg{width:20px;height:20px}.user-management-modal{width:98%;max-height:95vh}.add-user-form{padding:1rem}.add-user-form h3{font-size:1rem}.btn-add-user{min-height:48px}.users-table{display:none!important}.users-list{display:block!important}.users-table-mobile{display:flex!important;flex-direction:column;gap:1rem}.user-card-mobile{background:#fff;border:2px solid #e2e8f0;border-radius:1rem;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.user-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:.5rem}.user-card-email{font-weight:700;color:#4f46e5;font-size:.9375rem;word-break:break-word;flex:1}.user-card-role{width:100%}.user-card-role select{width:100%;min-height:44px;font-size:.9375rem}.user-card-notes{font-size:.8125rem;color:#64748b;padding:.5rem;background:#f8fafc;border-radius:.5rem}.user-card-actions{display:flex;gap:.5rem}.user-card-actions button{flex:1;min-height:44px}.btn-delete-small{width:100%}}
