.calendar-body{display:flex;flex-direction:column;min-height:100vh}.calendar-body main{flex:1;display:flex;flex-direction:column}.calendar-main-section{flex:1;display:flex;flex-direction:column;padding:var(--spacing-lg) 0;background:linear-gradient(180deg,rgba(60,130,122,.08) 0,rgba(60,130,122,.02) 100%)}.calendar-container{flex:1;display:flex;flex-direction:column;width:100%}.calendar-control-panel{position:relative;background:linear-gradient(135deg,rgba(232,213,181,.95) 0,rgba(245,237,214,.95) 50%,rgba(232,213,181,.95) 100%);border:3px solid var(--color-bronze-dark);border-radius:var(--radius-md);box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 4px 12px rgba(58,50,38,.25);padding:var(--spacing-md) var(--spacing-lg);margin-bottom:var(--spacing-lg)}.control-panel-rivet{position:absolute;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 30% 30%,var(--color-brass-polished),var(--color-bronze-dark));box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 1px 2px rgba(0,0,0,.3)}.control-panel-rivet-tl{top:8px;left:8px}.control-panel-rivet-tr{top:8px;right:8px}.control-panel-rivet-bl{bottom:8px;left:8px}.control-panel-rivet-br{bottom:8px;right:8px}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-md);flex-wrap:wrap}.calendar-nav-group{display:flex;gap:var(--spacing-xs);flex-shrink:0}.calendar-nav-btn{padding:.5rem 1rem;font-size:var(--font-size-sm);min-width:3.5rem}.calendar-nav-btn span{font-size:1.25rem;line-height:1}.calendar-title{font-family:var(--font-display);font-size:var(--font-size-2xl);color:var(--color-bronze-dark);text-align:center;margin:0;flex:1;min-width:200px;letter-spacing:.03em;text-shadow:1px 1px 0 rgba(255,255,255,.3)}.calendar-year-group{display:flex;align-items:center;gap:var(--spacing-xs);flex-shrink:0}.calendar-year-label{color:var(--color-bronze-dark);font-size:var(--font-size-sm)}.calendar-year-select{appearance:none;background:linear-gradient(135deg,var(--color-brass-aged) 0,var(--color-brass-polished) 100%);border:2px solid var(--color-bronze-dark);border-radius:var(--radius-sm);color:var(--color-iron-dark);font-family:var(--font-heading);font-weight:700;font-size:var(--font-size-base);padding:.5rem 2rem .5rem 1rem;cursor:pointer;box-shadow:0 2px 4px rgba(58,50,38,.2);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%233A3226' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center}.calendar-year-select:focus,.calendar-year-select:hover{background:linear-gradient(135deg,var(--color-brass-polished) 0,#e5b968 100%);outline:0;box-shadow:0 0 0 2px rgba(212,168,88,.4)}.calendar-actions-group{display:flex;align-items:center;gap:var(--spacing-sm);flex-shrink:0}.calendar-view-group{display:flex;gap:0}.calendar-view-group .calendar-view-btn{padding:.5rem .875rem;font-size:var(--font-size-sm);min-width:3.75rem}.calendar-view-group .calendar-view-btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.calendar-view-group .calendar-view-btn:last-child{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-3px}.ics-export-btn{display:inline-flex;align-items:center;padding:.5rem 1rem;font-size:var(--font-size-sm)}.ics-export-btn svg{flex-shrink:0}.calendar-frame{position:relative;flex:1;display:flex;flex-direction:column;background:linear-gradient(135deg,rgba(232,213,181,.96) 0,rgba(245,237,214,.96) 50%,rgba(232,213,181,.96) 100%);border:4px solid var(--color-bronze-dark);border-radius:var(--radius-md);box-shadow:inset 0 1px 0 rgba(255,255,255,.4),0 8px 24px rgba(58,50,38,.3);padding:var(--spacing-md);min-height:700px}.calendar-frame-rivet{position:absolute;width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 30% 30%,var(--color-brass-polished),var(--color-bronze-dark));box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 1px 2px rgba(0,0,0,.3);z-index:2}.calendar-frame-rivet-tl{top:10px;left:10px}.calendar-frame-rivet-tr{top:10px;right:10px}.calendar-frame-rivet-bl{bottom:10px;left:10px}.calendar-frame-rivet-br{bottom:10px;right:10px}.calendar-mount{flex:1;display:flex;flex-direction:column}.fc{flex:1;display:flex!important;flex-direction:column;font-family:var(--font-body)!important;color:var(--color-text)!important}.fc .fc-view-harness{flex:1!important;min-height:500px;padding:1px}.fc .fc-scrollgrid{border:1px solid var(--color-bronze-dark)!important;border-radius:var(--radius-sm);box-sizing:border-box!important;overflow:hidden;table-layout:fixed!important}.fc .fc-col-header-cell{background:url('../assets/images/textures/brushed-alum-dark.png'),linear-gradient(160deg,#2d2418 0,#3a3020 60%,#2a2010 100%)!important;color:var(--color-brass-polished)!important;font-family:var(--font-heading);font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:var(--spacing-sm) 0;border-color:var(--color-bronze-dark)!important;text-shadow:0 1px 2px rgba(0,0,0,.5)}.fc .fc-col-header-cell-cushion{color:var(--color-brass-polished)!important;text-decoration:none;display:block;padding:4px 0}.fc .fc-day{background:rgba(245,237,214,.6);border-color:rgba(107,83,68,.3)!important;vertical-align:top}.fc .fc-day-other{background:rgba(232,213,181,.4)}.fc .fc-day-today{background:rgba(212,168,88,.15)!important}.fc .fc-day-today .fc-daygrid-day-number{color:var(--color-bronze-dark);font-weight:700}.fc .fc-daygrid-day-frame{min-height:90px;display:flex;flex-direction:column;position:relative}.fc .fc-daygrid-day-number{color:var(--color-bronze-dark);font-family:var(--font-heading);font-weight:600;padding:6px 10px;z-index:2;position:relative}.fc .fc-daygrid-day-top{justify-content:flex-start;flex-shrink:0}.fc .fc-daygrid-day-events{position:relative;z-index:1;margin-top:2px;flex:1}.fc .fc-daygrid-body-unbalanced .fc-daygrid-day-events{position:relative}.fc .fc-daygrid-event{border-radius:var(--radius-sm);border:1px solid rgba(60,130,122,.5);background:linear-gradient(135deg,var(--color-primary-teal) 0,var(--color-secondary-teal) 100%);color:var(--color-steam-white)!important;font-family:var(--font-heading);font-weight:600;font-size:var(--font-size-xs);padding:2px 6px;cursor:pointer;transition:all var(--transition-fast);box-shadow:0 1px 3px rgba(58,50,38,.2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4}.fc .fc-daygrid-event:hover{background:linear-gradient(135deg,var(--color-secondary-teal) 0,#6bada2 100%);transform:translateY(-1px);box-shadow:0 2px 6px rgba(58,50,38,.3)}.fc .fc-daygrid-event .fc-event-time,.fc .fc-daygrid-event .fc-event-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--color-steam-white);font-weight:600}.fc .fc-daygrid-event-dot{display:none}.fc .fc-more-link{color:var(--color-primary-teal);font-weight:700}.fc .fc-daygrid-body{width:100%!important}.fc .fc-daygrid-body table{width:100%!important}.fc .fc-daygrid-body td{width:14.28%!important}.fc .fc-button,.fc .fc-toolbar,.fc .fc-toolbar-title{display:none}.fc .fc-list-empty{background:rgba(245,237,214,.6);color:var(--color-bronze-dark);font-family:var(--font-heading);font-style:italic;padding:var(--spacing-xl) var(--spacing-md);text-align:center;border-radius:var(--radius-sm)}.fc .fc-list-table{width:100%;border-collapse:collapse}.fc .fc-list-day-cushion{background:url('../assets/images/textures/brushed-alum-dark.png'),linear-gradient(160deg,#2d2418 0,#3a3020 60%,#2a2010 100%)!important;color:var(--color-brass-polished)!important;font-family:var(--font-heading);font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-sm);text-shadow:0 1px 2px rgba(0,0,0,.5)}.fc .fc-list-day-cushion .fc-list-day-side-text,.fc .fc-list-day-cushion .fc-list-day-text{color:var(--color-brass-polished)!important}.fc .fc-list-event{background:rgba(245,237,214,.5);border-bottom:1px solid rgba(107,83,68,.2);cursor:pointer;transition:background var(--transition-fast)}.fc .fc-list-event:hover{background:rgba(212,168,88,.15)}.fc .fc-list-event-time{color:var(--color-bronze-dark);font-family:var(--font-heading);font-weight:600;font-size:var(--font-size-sm);padding:var(--spacing-sm) var(--spacing-md);white-space:nowrap;width:1%}.fc .fc-list-event-title{font-family:var(--font-heading);font-weight:700;color:var(--color-text);padding:var(--spacing-sm) var(--spacing-md)}.fc .fc-list-event-title .fc-event-title,.fc .fc-list-event-title a{color:var(--color-text)!important;text-decoration:none}.fc .fc-list-event-dot{display:none}.fc .fc-list-event-graphic,.fc .fc-list-event-time,.fc .fc-list-event-title{vertical-align:middle}.fc .fc-list-event-graphic{padding:0 var(--spacing-xs);text-align:center}.fc .fc-list-event-graphic::before{content:'';display:inline-block;vertical-align:middle;position:relative;top:-4px;width:12px;height:12px;border-radius:50%;background:linear-gradient(135deg,var(--color-primary-teal) 0,var(--color-secondary-teal) 100%);box-shadow:0 1px 3px rgba(58,50,38,.2)}.event-modal-overlay{position:fixed;inset:0;z-index:1000;background:rgba(42,34,24,.75);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:var(--spacing-md);opacity:0;visibility:hidden;transition:opacity .25s ease,visibility .25s ease}.event-modal-overlay.is-open{opacity:1;visibility:visible}.event-modal{position:relative;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;background:linear-gradient(135deg,rgba(232,213,181,.98) 0,rgba(245,237,214,.98) 50%,rgba(232,213,181,.98) 100%);border:4px solid var(--color-bronze-dark);border-radius:var(--radius-md);box-shadow:0 20px 60px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.4);padding:var(--spacing-xl);transform:scale(.96) translateY(10px);transition:transform .25s ease}.event-modal-overlay.is-open .event-modal{transform:scale(1) translateY(0)}.event-modal-rivet{position:absolute;width:12px;height:12px;border-radius:50%;background:radial-gradient(circle at 30% 30%,var(--color-brass-polished),var(--color-bronze-dark));box-shadow:inset 0 1px 1px rgba(255,255,255,.4),0 1px 2px rgba(0,0,0,.3)}.event-modal-rivet-tl{top:10px;left:10px}.event-modal-rivet-tr{top:10px;right:10px}.event-modal-rivet-bl{bottom:10px;left:10px}.event-modal-rivet-br{bottom:10px;right:10px}.event-modal-close{position:absolute;top:14px;right:14px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--color-brass-aged) 0,var(--color-brass-polished) 100%);border:2px solid var(--color-bronze-dark);border-radius:var(--radius-sm);color:var(--color-iron-dark);cursor:pointer;transition:all var(--transition-fast);box-shadow:0 2px 4px rgba(58,50,38,.2)}.event-modal-close:focus,.event-modal-close:hover{background:linear-gradient(135deg,var(--color-brass-polished) 0,#e5b968 100%);outline:0;box-shadow:0 0 0 2px rgba(212,168,88,.4)}.event-modal-title{font-family:var(--font-display);font-size:var(--font-size-2xl);color:var(--color-bronze-dark);margin-bottom:var(--spacing-xs);padding-right:2.5rem;line-height:1.2}.event-modal-subtitle{font-family:var(--font-heading);font-size:var(--font-size-lg);color:var(--color-copper-bright);font-style:italic;margin-bottom:var(--spacing-lg)}.event-modal-subtitle:empty{display:none}.event-modal-field{margin-bottom:var(--spacing-md)}.event-modal-field:last-of-type{margin-bottom:0}.event-modal-field-label{display:block;color:var(--color-bronze-dark);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--spacing-xs);opacity:.8}.event-modal-field-value{font-family:var(--font-heading);font-size:var(--font-size-lg);color:var(--color-text);margin-bottom:0}.event-modal-field-hint{font-size:var(--font-size-sm);color:var(--color-bronze-dark);opacity:.7;margin-bottom:0;margin-top:2px}.event-modal-links{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.event-modal-links li a{display:inline-flex;align-items:center;padding:.5rem 1rem;font-size:var(--font-size-sm)}#event-modal-links-field:has(.event-modal-links:empty){display:none}@media (max-width:1024px){.calendar-toolbar{gap:var(--spacing-sm)}.calendar-title{font-size:var(--font-size-xl)}.calendar-actions-group{gap:var(--spacing-xs)}.calendar-view-group .calendar-view-btn{padding:.4rem .75rem;min-width:3.25rem}.calendar-nav-btn{padding:.4rem .875rem;font-size:var(--font-size-sm);min-width:3.25rem}.calendar-year-select{padding:.4rem 1.75rem .4rem .75rem;font-size:var(--font-size-sm)}.ics-export-btn{padding:.4rem .75rem}.fc .fc-daygrid-day-frame{min-height:75px}}@media (max-width:768px){.calendar-control-panel{padding:var(--spacing-sm)}.calendar-toolbar{flex-direction:column;gap:var(--spacing-sm)}.calendar-title{order:-1;font-size:var(--font-size-xl);min-width:auto;width:100%}.calendar-actions-group,.calendar-nav-group{width:100%;justify-content:center;flex-wrap:wrap}.calendar-actions-group{gap:var(--spacing-xs)}.calendar-year-group{flex-shrink:0}.calendar-frame{min-height:450px;padding:var(--spacing-sm)}.fc .fc-view-harness{min-height:350px}.fc .fc-col-header-cell{font-size:var(--font-size-xs);padding:var(--spacing-xs) 0}.fc .fc-daygrid-day-frame{min-height:70px}.fc .fc-daygrid-event{font-size:.65rem;padding:1px 4px}.fc .fc-list-event-time{font-size:var(--font-size-xs);padding:var(--spacing-xs) var(--spacing-sm)}.fc .fc-list-event-title{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-base)}.fc .fc-list-event-graphic{padding:var(--spacing-xs) 0 var(--spacing-xs) var(--spacing-sm)}.fc .fc-list-day-cushion{padding:var(--spacing-xs) var(--spacing-sm)}.event-modal{padding:var(--spacing-lg);max-height:85vh}.event-modal-title{font-size:var(--font-size-xl)}}@media (max-width:480px){.calendar-control-panel{padding:var(--spacing-xs)}.calendar-title{font-size:var(--font-size-lg)}.calendar-view-group .calendar-view-btn{padding:.35rem .625rem;min-width:2.75rem;font-size:var(--font-size-xs)}.calendar-nav-btn{padding:.35rem .625rem;font-size:var(--font-size-xs);min-width:2.75rem}.calendar-nav-btn span{font-size:1rem}.calendar-year-select{padding:.35rem 1.5rem .35rem .625rem;font-size:var(--font-size-xs)}.ics-export-btn{padding:.35rem .625rem;font-size:var(--font-size-xs)}.calendar-frame{min-height:380px;padding:var(--spacing-xs)}.fc .fc-view-harness{min-height:300px}.fc .fc-col-header-cell{font-size:.65rem;letter-spacing:.02em;padding:4px 0}.fc .fc-daygrid-day-number{padding:3px 5px;font-size:.7rem}.fc .fc-daygrid-day-frame{min-height:58px}.fc .fc-daygrid-event{padding:1px 3px;border-radius:3px}.fc .fc-daygrid-event .fc-event-time,.fc .fc-daygrid-event .fc-event-title{font-size:.55rem;line-height:1.3}.fc .fc-list-event-time{white-space:normal;display:block;width:auto;padding:var(--spacing-xs) var(--spacing-sm) 0}.fc .fc-list-event-title{padding:0 var(--spacing-sm) var(--spacing-xs)}.fc .fc-list-event-graphic{display:none}.fc .fc-list-event td{display:block;border:none}.fc .fc-list-event{border-bottom:1px solid rgba(107,83,68,.2)}.event-modal{padding:var(--spacing-md)}.event-modal-title{font-size:var(--font-size-lg)}.event-modal-subtitle{font-size:var(--font-size-base)}.event-modal-field-value{font-size:var(--font-size-base)}}@media (max-width:360px){.fc .fc-col-header-cell{font-size:.55rem}.fc .fc-daygrid-day-number{font-size:.65rem}.fc .fc-daygrid-day-frame{min-height:52px}}@media (prefers-reduced-motion:reduce){.event-modal,.event-modal-overlay,.fc .fc-daygrid-event{transition:none}}