.calendar-page{min-height:100vh;background:var(--bg-primary);padding-top:calc(var(--header-height) + var(--space-8));display:flex;gap:var(--space-6);max-width:var(--container-2xl);margin:0 auto;padding-left:clamp(1rem,2vw,2rem);padding-right:clamp(1rem,2vw,2rem);padding-bottom:var(--space-8)}.calendar-kicker{display:inline-flex;align-items:center;gap:var(--space-2);padding:.35rem .75rem;border:1px solid var(--border-secondary);border-radius:var(--radius-full);background:transparent;color:var(--text-tertiary);font-size:var(--text-xs);font-weight:var(--font-semibold);letter-spacing:.07em;text-transform:uppercase;margin-bottom:var(--space-3)}.calendar-heading{font-family:var(--font-editorial);font-size:clamp(1.75rem,3vw,2.5rem);font-weight:var(--font-medium);line-height:var(--leading-tight);color:var(--text-primary);margin:0}.calendar-container{flex:1;min-width:0}.calendar-header{margin-bottom:var(--space-6)}.calendar-header-top{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)}.calendar-title-section{flex:1 1 260px;min-width:220px}.calendar-actions{display:flex;align-items:center;gap:var(--space-3)}.calendar-nav{display:flex;gap:var(--space-1)}.calendar-period-title{font-family:var(--font-editorial);font-size:var(--text-lg);font-weight:var(--font-medium);color:var(--text-primary);margin:0;min-width:180px}.calendar-view-switcher{display:flex;background:var(--bg-secondary);border-radius:var(--radius-md);padding:3px;gap:2px}.view-tab{padding:.4rem .85rem;border:none;background:transparent;color:var(--text-secondary);font-size:var(--text-sm);font-weight:var(--font-medium);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.view-tab:hover{color:var(--text-primary)}.view-tab.active{background:var(--card-bg);color:var(--text-primary);box-shadow:var(--shadow-sm)}.calendar-body{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);box-shadow:var(--card-shadow);overflow:hidden}.calendar-grid-container{min-height:620px}.calendar-sidebar{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:var(--space-6)}.sidebar-section{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);box-shadow:var(--card-shadow);padding:var(--space-5)}.sidebar-title{font-family:var(--font-body);font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin:0 0 var(--space-4) 0}.upcoming-list{display:flex;flex-direction:column;gap:var(--space-3);max-height:400px;overflow-y:auto}.upcoming-item{padding:var(--space-3);border-radius:var(--radius-md);background:var(--bg-secondary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.upcoming-item:hover{background:var(--bg-tertiary);transform:translate(2px)}.upcoming-item-title{font-weight:var(--font-medium);font-size:var(--text-sm);color:var(--text-primary);margin-bottom:var(--space-1)}.upcoming-item-time{font-size:var(--text-xs);color:var(--text-tertiary)}.empty-state{color:var(--text-tertiary);font-size:var(--text-sm);text-align:center;padding:var(--space-6) 0}.category-list{display:flex;flex-direction:column;gap:var(--space-2)}.category-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);cursor:pointer;transition:background var(--duration-fast) var(--ease-default)}.category-item:hover{background:var(--bg-secondary)}.category-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.category-name{font-size:var(--text-sm);color:var(--text-primary);flex:1}.category-count{font-size:var(--text-xs);color:var(--text-tertiary);background:var(--bg-tertiary);padding:2px 8px;border-radius:var(--radius-full)}.cal-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-body);font-weight:var(--font-medium);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-fast) var(--ease-default);border:none;white-space:nowrap}.cal-btn:disabled{opacity:.5;cursor:not-allowed}.cal-btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.cal-btn-primary{background:var(--color-primary);color:#fff}.cal-btn-primary:hover:not(:disabled){background:var(--color-primary-hover);transform:translateY(-1px)}.cal-btn-secondary{background:transparent;color:var(--text-primary);border:1px solid var(--border-primary)}.cal-btn-secondary:hover:not(:disabled){background:var(--bg-secondary);border-color:var(--border-hover)}.cal-btn-ghost{background:transparent;color:var(--text-secondary)}.cal-btn-ghost:hover:not(:disabled){background:var(--bg-secondary);color:var(--text-primary)}.cal-btn-danger{background:var(--color-danger);color:#fff}.cal-btn-danger:hover:not(:disabled){background:var(--color-danger-hover)}.cal-btn-sm{padding:.4rem .65rem;font-size:var(--text-sm);height:1.75rem}.cal-btn-md{padding:.5rem .85rem;font-size:var(--text-sm);height:2rem}.cal-btn-lg{padding:.65rem 1.25rem;font-size:var(--text-sm);height:2.5rem}.cal-btn-icon{width:2rem;height:2rem;padding:0}.modal-backdrop{position:fixed;inset:0;background:var(--bg-overlay);display:flex;align-items:center;justify-content:center;z-index:var(--z-modal);padding:var(--space-6);animation:fadeIn var(--duration-normal) var(--ease-default)}.modal-backdrop[hidden]{display:none}.modal-content{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;animation:modalSlideIn var(--duration-normal) var(--ease-out)}.modal-content.modal-sm{max-width:400px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--border-secondary)}.modal-header h2{font-family:var(--font-editorial);font-size:var(--text-xl);font-weight:var(--font-medium);margin:0}.modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);color:var(--text-tertiary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.modal-close:hover{background:var(--bg-secondary);color:var(--text-primary)}.event-form{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-5)}.form-group{display:flex;flex-direction:column;gap:var(--space-2)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.form-label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary)}.required{color:var(--color-danger)}.form-input{width:100%;padding:.65rem .85rem;background:var(--input-bg);border:1px solid var(--input-border);border-radius:var(--radius-md);color:var(--text-primary);font-size:var(--text-sm);transition:all var(--duration-fast) var(--ease-default)}.form-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--input-focus-ring)}.form-textarea{resize:vertical;min-height:80px}.form-actions{display:flex;justify-content:flex-end;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--border-secondary)}.reminders-container{display:flex;flex-direction:column;gap:var(--space-2)}.reminder-item{display:flex;align-items:center;gap:var(--space-2)}.reminder-item select{flex:1}.btn-remove-reminder{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);color:var(--text-tertiary);cursor:pointer;transition:all var(--duration-fast) var(--ease-default)}.btn-remove-reminder:hover{background:var(--color-danger-light);color:var(--color-danger)}.priority-selector{display:flex;gap:var(--space-4)}.priority-option{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;font-size:var(--text-sm);color:var(--text-secondary)}.priority-option input{position:absolute;opacity:0}.priority-dot{width:12px;height:12px;border-radius:50%;border:2px solid var(--border);transition:all var(--duration-fast) var(--ease-default)}.priority-low{background:var(--color-accent-green)}.priority-medium{background:var(--color-warning)}.priority-high{background:var(--color-danger)}.priority-option input:checked+.priority-dot{border-color:currentColor;box-shadow:0 0 0 2px var(--card-bg),0 0 0 4px currentColor}.reminder-methods{margin:0;padding:0;border:0}.method-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2)}.method-option{display:flex;align-items:center;gap:var(--space-2);min-height:2.5rem;padding:.55rem .7rem;border:1px solid var(--border-primary);border-radius:var(--radius-md);background:var(--bg-secondary);color:var(--text-secondary);font-size:var(--text-sm);font-weight:var(--font-medium)}.method-option input{width:1rem;height:1rem;accent-color:var(--color-primary)}.meow-status{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--text-secondary);font-size:var(--text-sm);line-height:var(--leading-snug)}.meow-status-dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--color-success);box-shadow:0 0 0 4px var(--color-success-light);flex:0 0 auto}.calendar-storage-status,.calendar-storage-note{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-snug);margin:0}.calendar-storage-note{margin-top:var(--space-3);color:var(--text-tertiary);font-size:var(--text-xs)}.delete-confirm{padding:var(--space-6)}.delete-confirm p{margin-bottom:var(--space-5);color:var(--text-secondary)}.event-detail{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.detail-row{display:flex;gap:var(--space-3)}.detail-label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-tertiary);min-width:80px}.detail-value{font-size:var(--text-sm);color:var(--text-primary)}.detail-actions{padding:var(--space-4) var(--space-6) var(--space-6);display:flex;gap:var(--space-3);justify-content:flex-end}.detail-actions .cal-btn-danger{margin-left:auto}.category-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium)}.priority-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--font-medium);text-transform:capitalize}.priority-badge.priority-low{background:var(--color-success-light);color:var(--color-success)}.priority-badge.priority-medium{background:#d8b07026;color:var(--color-warning)}.priority-badge.priority-high{background:var(--color-danger-light);color:var(--color-danger)}.reminder-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-full);background:var(--color-primary-light);color:var(--color-primary);font-size:var(--text-xs);font-weight:var(--font-medium);margin-right:4px}.reminder-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--color-primary);margin-left:6px;vertical-align:middle}.month-grid{display:flex;flex-direction:column;height:100%}.weekday-header{display:grid;grid-template-columns:repeat(7,1fr);background:var(--bg-secondary);border-bottom:1px solid var(--border-secondary)}.weekday-label{padding:var(--space-3) var(--space-2);text-align:center;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em}.month-days-grid{display:grid;grid-template-columns:repeat(7,1fr);flex:1;min-height:560px}.day-cell{min-height:92px;padding:var(--space-2);border-right:1px solid var(--border-secondary);border-bottom:1px solid var(--border-secondary);cursor:pointer;transition:background var(--duration-fast) var(--ease-default)}.day-cell:nth-child(7n){border-right:none}.day-cell:hover{background:var(--bg-secondary)}.day-cell.other-month{opacity:.4}.day-cell.today{background:var(--color-primary-subtle)}.day-number{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-secondary);margin-bottom:var(--space-1)}.day-cell.today .day-number{background:var(--color-primary);color:#fff;border-radius:50%}.event-chip{padding:3px 6px;margin-bottom:2px;border-radius:var(--radius-sm);font-size:11px;font-weight:var(--font-medium);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:transform var(--duration-fast) var(--ease-default)}.event-chip:hover{transform:translate(2px)}.more-events{font-size:11px;color:var(--text-tertiary);padding:2px 4px;font-weight:var(--font-medium)}.week-grid{display:flex;flex-direction:column}.week-header{display:grid;grid-template-columns:60px repeat(7,1fr);background:var(--bg-secondary);border-bottom:1px solid var(--border-secondary)}.week-day-header{padding:var(--space-3);text-align:center;display:flex;flex-direction:column;gap:2px}.week-day-header.today{background:var(--color-primary-subtle)}.week-day-name{font-size:var(--text-xs);color:var(--text-tertiary);font-weight:var(--font-semibold)}.week-day-num{font-size:var(--text-lg);font-weight:var(--font-medium);color:var(--text-primary)}.week-time-grid{display:flex;flex-direction:column}.week-time-row{display:grid;grid-template-columns:60px repeat(7,1fr);border-bottom:1px solid var(--border-secondary);min-height:60px}.week-time-label{padding:var(--space-2);font-size:var(--text-xs);color:var(--text-tertiary);text-align:right;border-right:1px solid var(--border-secondary)}.week-time-cell{position:relative;border-right:1px solid var(--border-secondary);cursor:pointer}.week-time-cell:hover{background:var(--bg-secondary)}.week-event{position:absolute;left:2px;right:2px;padding:4px 6px;border-radius:var(--radius-sm);font-size:11px;overflow:hidden;cursor:pointer;transition:transform var(--duration-fast) var(--ease-default)}.week-event:hover{transform:scale(1.02);z-index:10}.day-grid{display:flex;flex-direction:column}.day-time-row{display:grid;grid-template-columns:80px 1fr;border-bottom:1px solid var(--border-secondary);min-height:60px}.day-time-label{padding:var(--space-3);font-size:var(--text-sm);color:var(--text-tertiary);text-align:right;border-right:1px solid var(--border-secondary)}.day-time-content{padding:var(--space-2);position:relative}.day-event{padding:var(--space-3);margin-bottom:var(--space-2);border-radius:var(--radius-md);cursor:pointer;transition:transform var(--duration-fast) var(--ease-default)}.day-event:hover{transform:translate(4px)}.day-event-time{font-size:var(--text-xs);color:var(--text-tertiary);margin-bottom:2px}.day-event-title{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary)}.day-event-location{font-size:var(--text-xs);color:var(--text-secondary);margin-top:2px}.day-event-reminders{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:1024px){.calendar-page{flex-direction:column}.calendar-sidebar{width:100%;flex-direction:row;flex-wrap:wrap}.sidebar-section{flex:1;min-width:250px}}@media(max-width:768px){.calendar-page{padding-top:calc(var(--header-height) + var(--space-5));padding-left:var(--space-4);padding-right:var(--space-4)}.calendar-header-top{flex-direction:column;align-items:flex-start}.calendar-actions{width:100%;justify-content:space-between;flex-wrap:wrap}.calendar-period-title{min-width:0;width:100%}.calendar-view-switcher{order:-1;width:100%}.view-tab{flex:1;text-align:center}.form-row,.method-grid{grid-template-columns:1fr}.calendar-sidebar{flex-direction:column}.calendar-grid-container{min-height:520px;overflow-x:auto}.month-grid{min-width:680px}.day-cell{min-height:78px}}
