:root{--color-office: #22c55e;--color-wfh: #3b82f6;--color-leave: #ef4444;--color-primary: #4f46e5;--color-primary-light: #6366f1;--color-today-bg: #c7d2fe;--color-today-text: #4338ca}.app-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background-color:#f3f4f6;padding:1rem;font-family:system-ui,Segoe UI,Roboto,Arial}.calendar-widget{width:100%;max-width:42rem;background:#fff;border-radius:1rem;box-shadow:0 10px 15px #0000000f;overflow:hidden}.calendar-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem;background:var(--color-primary);color:#fff}.month-title{font-size:1.25rem;font-weight:700}.nav-button{background:none;border:0;color:#fff;padding:.5rem;border-radius:9999px;cursor:pointer;font-size:1.25rem}.calendar-body{padding:1rem}.week-days{display:grid;grid-template-columns:repeat(7,1fr);gap:.25rem;text-align:center;font-weight:600;color:#4b5563;margin-bottom:.5rem;font-size:.875rem}.days-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.375rem}.day-cell{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1/1;border-radius:.5rem;font-size:.875rem;transition:background-color .1s ease-out;color:#374151}.day-cell.empty{background:#f9fafb}.day-cell.day{cursor:pointer;transition:background-color .2s ease}.day-cell.day:hover{background:#e0e7ff}.day-cell.today{border:2px solid var(--color-primary);background:var(--color-today-bg);color:var(--color-today-text);font-weight:700}.day-cell.office{background-color:var(--color-office);color:#fff;font-weight:600}.day-cell.wfh{background-color:var(--color-wfh);color:#fff;font-weight:600}.day-cell.leave{background-color:var(--color-leave);color:#fff;font-weight:600}.summary-footer{background:#f9fafb;padding:1.25rem;border-top:1px solid #e5e7eb}.summary-title{font-size:1.25rem;font-weight:700;color:#1f2937}.summary-goal{font-size:.875rem;color:#6b7280;margin-bottom:.75rem}.summary-progress{display:flex;justify-content:space-between;align-items:flex-end}.summary-total{font-size:1.875rem;font-weight:700;color:var(--color-primary)}.summary-target{font-size:1.125rem;font-weight:600;color:#4b5563}.progress-bar-container{width:100%;background:#e5e7eb;border-radius:9999px;height:.75rem;overflow:hidden;margin-top:.5rem}.progress-bar-fill{background:var(--color-office);height:.75rem;border-radius:9999px;transition:width .5s ease-out}.summary-details{margin-top:1.5rem}.summary-item{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.summary-item-label{display:flex;align-items:center;gap:.5rem;color:#4b5563}.summary-color-dot{width:.75rem;height:.75rem;border-radius:9999px}.summary-item-count{font-weight:600;color:#1f2937}.user-id-display{font-size:.75rem;color:#9ca3af;padding-top:.75rem;word-break:break-all}.loading-container{display:flex;flex-direction:column;align-items:center;padding:3rem}.loading-spinner{width:3rem;height:3rem;border-radius:50%;animation:spin 1s linear infinite;border:4px solid var(--color-today-bg);border-top-color:var(--color-primary)}@keyframes spin{to{transform:rotate(360deg)}}.copyright-footer{margin-top:2rem;padding-top:1rem;border-top:1px solid #e5e7eb;text-align:center;font-size:.875rem;color:#6b7280}.copyright-footer a{color:var(--color-primary);text-decoration:none}.copyright-footer a:hover{text-decoration:underline}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:2rem;text-align:center;background:#f3f4f6}.error-container h2{color:#dc2626;margin-bottom:1rem}.error-container button{margin-top:1rem;padding:.5rem 1rem;background:var(--color-primary);color:#fff;border:none;border-radius:.375rem;cursor:pointer}.error-container button:hover{background:var(--color-primary-light)}.status-toolbar{display:flex;gap:.5rem;padding:1rem;background:#f9fafb;border-bottom:1px solid #e5e7eb}.status-btn{padding:.5rem 1rem;border:2px solid transparent;border-radius:.375rem;background:var(--status-color, #e5e7eb);color:#fff;font-weight:600;cursor:pointer;transition:all .2s}.status-btn:hover{opacity:.9}.status-btn.active{border-color:#1f2937;box-shadow:0 0 0 2px #1f29371a}.status-btn:last-child{background:#e5e7eb;color:#1f2937}.snackbar{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#1f2937;color:#fff;padding:.75rem 1.5rem;border-radius:9999px;font-size:.875rem;box-shadow:0 2px 8px #00000040;animation:fade-in .3s ease-out;z-index:50}@keyframes fade-in{0%{opacity:0;transform:translate(-50%,1rem)}to{opacity:1;transform:translate(-50%)}}
