.calendar-controls{margin-bottom:2rem;background:var(--bg-primary);border-radius:12px;box-shadow:var(--shadow-sm);transition:all .2s ease}.calendar-controls .control-group{margin-bottom:0;padding:1.5rem;display:flex;justify-content:center}.calendar-controls .year-selector-container{border-top:1px solid var(--border-color);padding:1.5rem;display:flex;justify-content:center;width:100%}.calendar-controls .year-selector-container .year-month-selector{margin-bottom:0;padding:0;background:none;border-radius:0;box-shadow:none}.calendar-filter-toggle{display:flex;justify-content:center;gap:.5rem;flex-wrap:wrap}.calendar-filter-btn{padding:.5rem 1.25rem;border:2px solid var(--border-color);border-radius:var(--radius-md);background:var(--bg-primary);color:var(--text-secondary);font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.4rem;white-space:nowrap}.calendar-filter-btn:hover{border-color:var(--accent-color);color:var(--accent-color)}.calendar-filter-btn.active{background:var(--accent-color);border-color:var(--accent-color);color:#fff}.calendar-filter-btn .material-symbols-outlined{font-size:1.1rem}.calendar-body.is-loading>*{display:none}.calendar-body.is-loading:after{content:"progress_activity";font-family:Material Symbols Outlined;font-size:2.5rem;color:var(--accent-color);display:flex;justify-content:center;width:100%;padding:4rem 1rem;animation:spin 1s linear infinite}.calendar-display{background:var(--bg-primary);border-radius:12px;padding:1.5rem;box-shadow:var(--shadow-sm)}.calendar-events-list{display:none;flex-direction:column;gap:.75rem}.calendar-event-item{display:flex;align-items:center;gap:.75rem;padding:.875rem;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px}.event-date{font-weight:700;font-size:.9rem;color:var(--text-primary);min-width:100px}.event-content{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;margin-bottom:.5rem}.weekday{text-align:center;font-weight:600;font-size:.875rem;color:var(--text-secondary);padding:.5rem}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem}.calendar-day{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:8px;padding:.5rem;min-height:88px;transition:all .2s ease;display:flex;flex-direction:column;position:relative}.calendar-day:hover{background:var(--bg-tertiary);border-color:var(--text-secondary);box-shadow:var(--shadow-sm)}.day-number{font-weight:700;font-size:1rem;color:var(--text-primary);margin-bottom:.25rem}.day-events{display:flex;flex-direction:column;gap:.25rem;margin-top:auto}.event-dot{width:6px;height:6px;border-radius:50%;background:var(--accent-color)}.calendar-day.placeholder{background:transparent;border:none;cursor:default;pointer-events:none}.calendar-day.placeholder:hover{transform:none;box-shadow:none}.calendar-day.today{border-color:var(--accent-color);border-width:2px;background:var(--bg-tertiary)}.calendar-day.today .day-number{color:var(--accent-color)}.calendar-day.day--popover-open{background:var(--bg-tertiary);box-shadow:0 0 0 2px var(--accent-color),0 6px 16px #0000001f;z-index:2}.calendar-day.day--popover-open .day-number{color:var(--accent-color)}.calendar-day.weekend{background:var(--bg-tertiary)}.calendar-day.has-events{border-color:var(--accent-color)}.day-birthdays{display:flex;flex-direction:row;flex-wrap:wrap;gap:.25rem;margin-top:.35rem}.day-avatar{position:relative;width:33px;height:33px;display:inline-flex;flex-shrink:0;transition:transform .15s ease;text-decoration:none}.day-avatar:hover{transform:scale(1.15);z-index:1}.day-avatar-img{width:100%;height:100%;border-radius:50%;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-secondary);border:1px solid var(--border-color)}.day-avatar-img img{width:100%;height:100%;object-fit:cover}.day-avatar-img .material-symbols-outlined{font-size:24px;color:var(--text-secondary)}.day-avatar-age{position:absolute;bottom:-3px;right:-3px;min-width:16px;height:16px;padding:0 3px;border-radius:8px;background:var(--accent-color);color:#fff;font-size:.65rem;font-weight:700;line-height:16px;text-align:center}.day-entry-list{display:flex;flex-direction:column;gap:.2rem;margin-top:.3rem}.day-entry{display:flex;align-items:center;gap:.25rem;padding:.15rem .4rem;border-radius:4px;font-size:.78rem;line-height:1.2;background:var(--bg-secondary);color:var(--text-primary);text-decoration:none;min-width:0}.day-entry:hover{background:var(--bg-tertiary)}.day-entry .material-symbols-outlined{font-size:.95rem;flex-shrink:0}.day-entry-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.day-entry--tour,.day-entry--tour .material-symbols-outlined{color:var(--accent-color)}.day-entry--event,.day-entry--event .material-symbols-outlined{color:#2c5db8}.day-entry--ghost,.day-popover-entry--ghost,.calendar-event-badge--ghost{cursor:default;opacity:.7;font-style:italic}.day-entry--ghost:hover,.day-popover-entry--ghost:hover,.calendar-event-badge--ghost:hover{background:inherit;transform:none}.day-more{background:transparent;border:none;cursor:pointer;padding:.1rem .4rem;font-size:.72rem;font-weight:600;color:var(--text-secondary);text-align:left;border-radius:4px;font-family:inherit}.day-more:hover{color:var(--text-primary);background:var(--bg-tertiary)}.calendar-day.has-entries{cursor:pointer}.day-popover{position:absolute;top:calc(100% + 6px);left:0;width:max-content;min-width:220px;max-width:min(320px,calc(100vw - 2rem));max-height:70vh;overflow-y:auto;background:var(--bg-primary);border:1px solid var(--border-color);border-radius:10px;box-shadow:0 8px 28px #0000002e;z-index:100;text-align:left}.day-popover[hidden]{display:none}.day-popover--flip-up{top:auto;bottom:calc(100% + 6px)}.day-popover--align-right{left:auto;right:0}.day-popover-header{display:flex;align-items:center;justify-content:space-between;padding:.5rem .75rem;border-bottom:1px solid var(--border-color);background:var(--bg-secondary);position:sticky;top:0;z-index:1}.day-popover-date{font-weight:700;color:var(--text-primary)}.day-popover-close{background:none;border:none;cursor:pointer;color:var(--text-secondary);padding:.15rem;display:flex;align-items:center;border-radius:4px}.day-popover-close:hover{color:var(--text-primary);background:var(--bg-tertiary)}.day-popover-close .material-symbols-outlined{font-size:18px}.day-popover-body{padding:.5rem .75rem .75rem}.day-popover-section+.day-popover-section{margin-top:.75rem}.day-popover-section-title{display:flex;align-items:center;gap:.35rem;margin:.35rem 0;font-size:.78rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}.day-popover-section-title .material-symbols-outlined{font-size:1.05rem}.day-popover-list{display:flex;flex-direction:column;gap:.3rem}.day-popover-list--badges{flex-direction:row;flex-wrap:wrap;gap:.4rem}.day-popover-entry{display:flex;flex-direction:column;gap:.1rem;padding:.5rem .65rem;border-radius:6px;background:var(--bg-secondary);color:var(--text-primary);text-decoration:none;transition:background .15s ease}.day-popover-entry:hover{background:var(--bg-tertiary)}.day-popover-entry-time{font-size:.78rem;color:var(--text-secondary);line-height:1}.day-popover-entry-title{font-weight:600;line-height:1.3}.year-overview{margin-top:2rem}.year-overview-title{font-size:1.75rem;font-weight:600;color:var(--text-primary);margin-bottom:1.5rem}.year-overview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}.year-overview-grid.htmx-request:after{grid-column:1 / -1}.month-box-content-title{font-size:.95rem;font-weight:600;color:var(--text-secondary);margin-top:1rem;margin-bottom:.5rem}.month-box-content-title:first-of-type{margin-top:0}.month-box-content{display:flex;flex-direction:row;flex-wrap:wrap;align-items:flex-start;gap:.5rem}.month-box-empty{text-align:center;padding:1.5rem;color:var(--text-secondary);font-size:.9rem;font-style:italic}.year-overview-grid .card .user-badge,.year-overview-grid .card .calendar-tour-badge,.year-overview-grid .card .calendar-event-badge{margin-top:0;max-width:fit-content}@media(max-width:1500px){.calendar-controls .control-group,.calendar-controls .year-selector-container{padding:1rem}.year-overview-grid{grid-template-columns:1fr;gap:1rem}.year-overview-title{font-size:1.5rem}}@media(max-width:768px){.calendar-weekdays,.calendar-grid{display:none}.calendar-events-list{display:flex;gap:.75rem}.calendar-event-item{display:flex;align-items:center;gap:.75rem;padding:.875rem}.event-date{font-size:.9rem;min-width:110px}}@media(max-width:768px){.calendar-filter-toggle{flex-wrap:nowrap;gap:.4rem}.calendar-filter-btn{padding:.4rem .75rem;font-size:.85rem}.calendar-filter-btn .material-symbols-outlined{font-size:1rem}}@media(max-width:500px){.calendar-filter-btn-label{display:none}.calendar-filter-btn{padding:.45rem .7rem}.calendar-filter-btn .material-symbols-outlined{font-size:1.2rem}}@media(max-width:480px){.calendar-events-list{gap:.625rem}.calendar-event-item{flex-direction:column;align-items:flex-start;gap:.5rem;padding:.75rem}.event-date{font-size:.85rem;min-width:auto}.year-overview-grid{gap:.875rem}.year-overview-title{font-size:1.35rem}}.calendar-tour-badge,.calendar-event-badge{display:inline-flex;align-items:center;gap:.5rem;margin-top:0;padding:0rem .75rem;min-height:38px;background:var(--bg-secondary);border-radius:50px;transition:all .2s ease;text-decoration:none;max-width:100%;width:fit-content}.calendar-tour-badge:hover,.calendar-event-badge:hover{background:var(--accent-color);box-shadow:var(--shadow-sm)}.calendar-tour-badge .material-symbols-outlined,.calendar-event-badge .material-symbols-outlined{font-size:18px;color:var(--accent-color);flex-shrink:0}.calendar-tour-badge:hover .material-symbols-outlined,.calendar-event-badge:hover .material-symbols-outlined{color:#fff}.calendar-tour-badge .badge-title,.calendar-event-badge .badge-title{font-size:.75rem;font-weight:500;color:var(--text-primary);overflow-wrap:break-word;line-height:1.3}.calendar-tour-badge:hover .badge-title,.calendar-event-badge:hover .badge-title{color:#fff}.day-entries{display:flex;flex-direction:row;flex-wrap:wrap;gap:.25rem;padding:.5rem .25rem .25rem}.user-badge{max-width:100%;margin-top:0}.user-badge-name{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:break-word;word-wrap:break-word;font-size:.75rem}#headerUserBadge .user-badge{margin-top:1rem}.calendar-subscribe-card{display:flex;align-items:center;gap:1.25rem;padding:1rem 1.25rem;margin-bottom:1.5rem}.calendar-subscribe-card__intro{display:flex;align-items:center;gap:.75rem;flex:1 1 240px;min-width:0}.calendar-subscribe-card__icon{font-size:2rem;color:var(--accent-color);flex-shrink:0}.calendar-subscribe-card__text strong{display:block;color:var(--text-primary);font-size:1rem;line-height:1.3}.calendar-subscribe-card__text p{margin-top:.15rem;color:var(--text-secondary);font-size:.85rem;line-height:1.4}.calendar-subscribe-card__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;flex:2 1 480px}.calendar-subscribe-card__actions .btn-secondary{justify-content:center;min-width:0}.calendar-subscribe-card__actions .btn-secondary span:not(.material-symbols-outlined){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-sub-btn-label--short{display:none}@media(max-width:900px){.calendar-subscribe-card{flex-direction:column;align-items:stretch;gap:1rem}.calendar-subscribe-card__intro{flex:0 0 auto}.calendar-subscribe-card__actions{flex:0 0 auto;grid-auto-rows:min-content}.cal-sub-btn-label--full{display:none}.cal-sub-btn-label--short{display:inline}}@media(max-width:380px){.calendar-subscribe-card__actions{grid-template-columns:1fr}}@media(max-width:480px){.calendar-subscribe-card{padding:.85rem 1rem}.calendar-subscribe-card__icon{font-size:1.5rem}.calendar-subscribe-card__text strong{font-size:.95rem}.calendar-subscribe-card__text p{font-size:.8rem}}.calendar-subscribe-url-group{display:flex;gap:.5rem;margin:1rem 0 1.25rem}.calendar-subscribe-url{flex:1;padding:.6rem .75rem;border:1px solid var(--border-color);border-radius:var(--radius-md, 8px);background:var(--bg-secondary);color:var(--text-primary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem;min-width:0}.calendar-subscribe-url:focus{outline:2px solid var(--accent-color);outline-offset:1px}.calendar-subscribe-quick-actions{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.25rem}.calendar-subscribe-quick-actions .btn-secondary{flex:1 1 200px}.calendar-subscribe-help{margin-bottom:1.25rem;padding:.75rem 1rem;background:var(--bg-secondary);border-radius:var(--radius-md, 8px);font-size:.85rem;color:var(--text-secondary)}.calendar-subscribe-help summary{cursor:pointer;font-weight:600;color:var(--text-primary)}.calendar-subscribe-help[open] summary{margin-bottom:.5rem}.calendar-subscribe-help ul{margin:0;padding-left:1.2rem;line-height:1.6}.calendar-subscribe-help li{margin-bottom:.35rem}.calendar-subscribe-token-actions{margin-top:.5rem;padding-top:.75rem;border-top:1px solid var(--border-color)}.calendar-subscribe-token-actions .btn-text-danger{display:inline-flex;align-items:center;gap:.35rem;background:none;border:0;padding:0;color:var(--color-error, #ef4444);font-size:.85rem;font-weight:600;cursor:pointer;font-family:inherit}.calendar-subscribe-token-actions .btn-text-danger:hover span:not(.material-symbols-outlined){text-decoration:underline}.calendar-subscribe-token-hint{margin-top:.4rem;color:var(--text-tertiary);font-size:.75rem;line-height:1.4}@media(max-width:480px){.calendar-subscribe-url-group{flex-direction:column}.calendar-subscribe-quick-actions .btn-secondary{flex-basis:100%}}
