.calendar-page{--calendar-primary:#1e4620;--calendar-primary-light:#2d5016;--calendar-primary-dark:#0f2310;--calendar-gold:gold;--calendar-gold-dark:#b8860b;--calendar-white:#fff;--calendar-gray-50:#fafafa;--calendar-gray-100:#f5f5f5;--calendar-gray-200:#e8e8e8;--calendar-gray-600:#666;--calendar-gray-900:#1a1a1a;--calendar-red:#dc143c;--calendar-green:#228b22;--calendar-violet:#8b008b;--calendar-rose:#ff69b4;--calendar-shadow-sm:0 2px 8px rgba(0,0,0,.06);--calendar-shadow-md:0 4px 16px rgba(0,0,0,.1);--calendar-shadow-lg:0 8px 24px rgba(0,0,0,.12);--calendar-radius-sm:8px;--calendar-radius-md:12px;--calendar-radius-lg:16px;--calendar-radius-full:50px;background:linear-gradient(180deg,var(--calendar-gray-50) 0,#e9ecef 100%);min-height:100vh}.calendar-header{background:linear-gradient(135deg,var(--calendar-primary-dark) 0,var(--calendar-primary) 50%,var(--calendar-primary-light) 100%);color:var(--calendar-white);overflow:hidden;padding:4rem 0 3rem;position:relative;text-align:center}.calendar-header:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Cpath fill='%23fff' fill-opacity='.06' d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2zm0-30V0h-2v4h-4v2h4v4h2V6h4V4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2zM6 4V0H4v4H0v6h4v4h2V6h4V4z'/%3E%3C/svg%3E");bottom:0;content:"";left:0;opacity:.5;position:absolute;right:0;top:0;z-index:0}.calendar-header .container{position:relative;z-index:1}.calendar-title{color:var(--calendar-white)!important;font-family:var(--font-heading,"Playfair Display",serif);font-size:clamp(2rem,5vw,3rem);font-weight:800;letter-spacing:-.02em;line-height:1.1;margin:0 0 .75rem;text-shadow:0 3px 10px rgba(0,0,0,.3)}.calendar-description{color:var(--calendar-white)!important;font-size:clamp(1rem,2vw,1.15rem);font-weight:400;line-height:1.6;margin:0 auto 2rem;max-width:700px;opacity:.95}.year-selector{backdrop-filter:blur(10px);background:rgba(0,0,0,.2);display:inline-flex;gap:0;justify-content:center;padding:.35rem}.year-btn,.year-selector{border-radius:var(--calendar-radius-full)}.year-btn{background:transparent;border:none;color:hsla(0,0%,100%,.85);font-size:1rem;font-weight:700;padding:.875rem 2.5rem;position:relative;text-decoration:none;transition:all .3s cubic-bezier(.4,0,.2,1)}.year-btn:hover{background:hsla(0,0%,100%,.15);color:var(--calendar-white)}.year-btn.active{box-shadow:0 4px 12px rgba(0,0,0,.2);color:var(--calendar-primary)}.month-nav,.year-btn.active{background:var(--calendar-white)}.month-nav{border-bottom:1px solid var(--calendar-gray-200);box-shadow:var(--calendar-shadow-sm);padding:1rem 0;position:sticky;top:0;z-index:100}.month-nav-inner{display:flex;gap:.5rem;overflow-x:auto;padding:.5rem 0;scrollbar-width:thin;-webkit-overflow-scrolling:touch}.month-nav-inner::-webkit-scrollbar{height:4px}.month-nav-inner::-webkit-scrollbar-thumb{background:var(--calendar-gray-200);border-radius:2px}.month-nav-btn{background:var(--calendar-gray-100);border:none;border-radius:var(--calendar-radius-sm);color:var(--calendar-gray-600);cursor:pointer;flex-shrink:0;font-size:.875rem;font-weight:600;padding:.625rem 1rem;text-decoration:none;transition:all .2s ease}.month-nav-btn:hover{background:var(--calendar-primary-light);color:var(--calendar-white)}.month-nav-btn.active{background:var(--calendar-primary);color:var(--calendar-white)}.calendar-legend{background:var(--calendar-white);border-bottom:1px solid var(--calendar-gray-200);padding:2.5rem 0}.calendar-legend h2{font-family:var(--font-heading,"Playfair Display",serif);font-size:1.5rem;font-weight:700;margin:0 0 1.5rem}.calendar-legend h2,.calendar-legend h3{color:var(--calendar-gray-900);text-align:center}.calendar-legend h3{font-size:1.125rem;font-weight:600;margin:2rem 0 1rem}.legend-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin:0 auto;max-width:900px}.legend-item{background:var(--calendar-gray-50);border-radius:var(--calendar-radius-md);padding:1.25rem;text-align:center;transition:all .2s ease}.legend-item:hover{background:var(--calendar-gray-100);transform:translateY(-2px)}.legend-item p{color:var(--calendar-gray-600);font-size:.85rem;line-height:1.4;margin:.75rem 0 0}.rank-badge{align-items:center;border-radius:var(--calendar-radius-full);box-shadow:0 2px 6px rgba(0,0,0,.1);display:inline-flex;font-size:.7rem;font-weight:700;justify-content:center;letter-spacing:.5px;padding:.5rem 1rem;text-transform:uppercase}.rank-badge.solemnity{background:linear-gradient(135deg,var(--calendar-gold) 0,var(--calendar-gold-dark) 100%);border:1px solid var(--calendar-gold);color:#4a3500}.rank-badge.feast{background:linear-gradient(135deg,var(--calendar-primary) 0,var(--calendar-primary-light) 100%);color:var(--calendar-white)}.rank-badge.memorial{background:linear-gradient(135deg,#6b7280,#4b5563);color:var(--calendar-white)}.rank-badge.commemoration,.rank-badge.optional-memorial{background:linear-gradient(135deg,#9333ea,#7e22ce);color:var(--calendar-white)}.irish-badge{align-items:center;background:linear-gradient(135deg,var(--calendar-primary) 0,var(--calendar-primary-light) 100%);border-radius:var(--calendar-radius-full);color:var(--calendar-white);display:inline-flex;font-size:.7rem;font-weight:700;gap:.375rem;padding:.5rem 1rem}.colors-grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));margin:0 auto;max-width:1000px}.color-item{align-items:center;background:var(--calendar-gray-50);border-radius:var(--calendar-radius-md);display:flex;font-size:.9rem;gap:1rem;padding:1rem 1.25rem;transition:all .2s ease}.color-item:hover{background:var(--calendar-gray-100);transform:translateX(4px)}.color-dot{border:2px solid var(--calendar-gray-200);border-radius:50%;box-shadow:inset 0 2px 4px rgba(0,0,0,.1);flex-shrink:0;height:28px;width:28px}.color-dot.color-white{background:var(--calendar-white)}.color-dot.color-red{background:var(--calendar-red)}.color-dot.color-green{background:var(--calendar-green)}.color-dot.color-violet{background:var(--calendar-violet)}.color-dot.color-rose{background:var(--calendar-rose)}.color-indicator{border:2px solid var(--calendar-gray-200);border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.1);height:22px;transition:transform .2s ease;width:22px}.color-indicator.color-white{background:var(--calendar-white)}.color-indicator.color-red{background:var(--calendar-red)}.color-indicator.color-green{background:var(--calendar-green)}.color-indicator.color-violet{background:var(--calendar-violet)}.color-indicator.color-rose{background:var(--calendar-rose)}.calendar-content{padding:2.5rem 0}.months-grid{display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}.month-card{background:var(--calendar-white);border:1px solid var(--calendar-gray-200);border-radius:var(--calendar-radius-lg);box-shadow:var(--calendar-shadow-sm);overflow:hidden;padding:0;scroll-margin-top:80px;transition:all .2s cubic-bezier(.4,0,.2,1)}.month-card:hover{box-shadow:var(--calendar-shadow-md);transform:translateY(-2px)}.month-name{background:linear-gradient(135deg,var(--calendar-primary-dark) 0,var(--calendar-primary) 100%);color:var(--calendar-white);font-family:var(--font-heading,"Playfair Display",serif);font-size:1.25rem;font-weight:700;letter-spacing:-.01em;margin:0;padding:1rem 1.5rem;position:relative}.month-name:after{background:linear-gradient(90deg,var(--calendar-gold),var(--calendar-gold-dark));bottom:0;content:"";height:3px;left:0;position:absolute;right:0}.no-special-days{background:var(--calendar-gray-50);border-radius:var(--calendar-radius-md);color:var(--calendar-gray-600);font-style:italic;margin:1rem;padding:2rem;text-align:center}.feast-days-list{display:flex;flex-direction:column;gap:0;padding:.75rem}.feast-day-item{background:var(--calendar-white);border:1px solid transparent;border-radius:var(--calendar-radius-sm);color:inherit;display:flex;gap:1rem;margin-bottom:.5rem;padding:1rem 1.25rem;text-decoration:none;transition:all .2s cubic-bezier(.4,0,.2,1)}.feast-day-item:last-child{margin-bottom:0}.feast-day-item.has-detail{cursor:pointer}.feast-day-item.has-detail:hover{background:#e8f5e9;border-color:#c8e6c9;box-shadow:var(--calendar-shadow-sm);transform:translateX(4px)}.feast-day-item.no-detail:hover{background:var(--calendar-gray-50)}.feast-day-item.irish-feast{background:linear-gradient(135deg,rgba(45,80,22,.06),rgba(58,107,31,.03));border-left:4px solid var(--calendar-primary);padding-left:1rem}.feast-day-item.irish-feast:hover{background:linear-gradient(135deg,rgba(45,80,22,.12),rgba(58,107,31,.08))}.feast-date{align-items:center;display:flex;flex-direction:column;gap:.5rem;min-width:60px}.date-number{color:var(--calendar-primary);font-family:var(--font-heading,"Playfair Display",serif);font-size:1.625rem;font-weight:800;line-height:1}.feast-details{flex:1;min-width:0}.feast-name{align-items:center;color:var(--calendar-gray-900);display:flex;flex-wrap:wrap;font-size:.95rem;font-weight:600;gap:.5rem;line-height:1.4;margin-bottom:.5rem}.irish-star{color:var(--calendar-gold);flex-shrink:0;font-size:1.1rem;text-shadow:0 1px 2px rgba(0,0,0,.2)}.detail-arrow{color:var(--calendar-primary);flex-shrink:0;font-size:1rem;font-weight:700;margin-left:auto;opacity:.5;transition:all .2s ease}.feast-day-item.has-detail:hover .detail-arrow{opacity:1;transform:translateX(4px)}.feast-meta{align-items:center;display:flex;flex-wrap:wrap;gap:.5rem}.feast-meta .rank-badge,.season-badge{font-size:.6rem;padding:.25rem .625rem}.season-badge{background:linear-gradient(135deg,var(--calendar-gold) 0,var(--calendar-gold-dark) 100%);border-radius:var(--calendar-radius-full);color:#4a3500;display:inline-block;font-weight:700;text-transform:uppercase}.irish-saints-section{background:linear-gradient(180deg,var(--calendar-white) 0,var(--calendar-gray-50) 100%);padding:3rem 0}.irish-saints-section h2{color:var(--calendar-primary);font-family:var(--font-heading,"Playfair Display",serif);font-size:1.75rem;font-weight:700;margin-bottom:.75rem;text-align:center}.section-intro{color:var(--calendar-gray-600);font-size:1rem;line-height:1.6;margin:0 auto 2.5rem;max-width:650px;text-align:center}.saints-grid{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));margin-bottom:3rem}.saint-card{background:var(--calendar-white);border-left:4px solid var(--calendar-primary);border-radius:var(--calendar-radius-md);box-shadow:var(--calendar-shadow-sm);padding:1.5rem;position:relative;transition:all .2s cubic-bezier(.4,0,.2,1)}.saint-card:before{color:rgba(255,215,0,.2);content:"★";font-size:1.5rem;position:absolute;right:1rem;top:1rem;transition:all .3s ease}.saint-card:hover{box-shadow:var(--calendar-shadow-lg);transform:translateY(-4px)}.saint-card:hover:before{color:rgba(255,215,0,.6);transform:rotate(72deg)}.saint-card h4{color:var(--calendar-primary);font-family:var(--font-heading,"Playfair Display",serif);font-size:1.1rem;font-weight:700;margin:0 0 .5rem}.saint-card p{color:var(--calendar-gray-600);font-size:.875rem;line-height:1.5;margin:0}.calendar-cta{background:linear-gradient(135deg,var(--calendar-primary-dark) 0,var(--calendar-primary) 50%,var(--calendar-primary-light) 100%);border-radius:var(--calendar-radius-lg);box-shadow:var(--calendar-shadow-lg);margin:0 auto;max-width:750px;overflow:hidden;padding:2.5rem 2rem;position:relative;text-align:center}.calendar-cta:before{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='60' height='60'%3E%3Cpath fill='%23fff' fill-opacity='.05' d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2z'/%3E%3C/svg%3E");bottom:0;content:"";left:0;opacity:.3;position:absolute;right:0;top:0}.calendar-cta>*{position:relative;z-index:1}.calendar-cta h3{color:var(--calendar-white);font-family:var(--font-heading,"Playfair Display",serif);font-size:1.5rem;font-weight:700;margin-bottom:.75rem}.calendar-cta p{color:hsla(0,0%,100%,.9);font-size:1rem;line-height:1.5;margin-bottom:1.75rem}.cta-buttons{display:flex;flex-wrap:wrap;gap:1rem;justify-content:center}.btn-primary,.btn-secondary{border-radius:var(--calendar-radius-sm);display:inline-block;font-size:.95rem;font-weight:600;padding:.875rem 2rem;text-decoration:none;transition:all .2s cubic-bezier(.4,0,.2,1)}.btn-primary{background:var(--calendar-white);border:2px solid var(--calendar-white);color:var(--calendar-primary)}.btn-primary:hover{background:var(--calendar-gray-100);box-shadow:0 8px 16px rgba(0,0,0,.2);transform:translateY(-2px)}.btn-secondary{background:transparent;border:2px solid hsla(0,0%,100%,.5);color:var(--calendar-white)}.btn-secondary:hover{background:hsla(0,0%,100%,.1);border-color:var(--calendar-white);transform:translateY(-2px)}.calendar-search{background:var(--calendar-white);border-radius:var(--calendar-radius-md);box-shadow:var(--calendar-shadow-sm);margin-bottom:2rem;padding:1.5rem}.search-row{display:flex;flex-wrap:wrap;gap:1rem}.search-input{border:2px solid var(--calendar-gray-200);border-radius:var(--calendar-radius-sm);flex:1;font-size:1rem;min-width:200px;padding:.875rem 1rem;transition:all .2s ease}.search-input:focus{border-color:var(--calendar-primary);box-shadow:0 0 0 3px rgba(45,80,22,.1);outline:none}.filter-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--calendar-white) url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath fill='%231e4620' d='M6 9 1 4h10z'/%3E%3C/svg%3E") no-repeat right 1rem center;border:2px solid var(--calendar-gray-200);border-radius:var(--calendar-radius-sm);cursor:pointer;font-size:1rem;padding:.875rem 2.5rem .875rem 1rem}.filter-select:focus{border-color:var(--calendar-primary);outline:none}.ical-export-btn{align-items:center;background:var(--calendar-white);border:2px solid var(--calendar-primary);border-radius:var(--calendar-radius-sm);color:var(--calendar-primary);cursor:pointer;display:inline-flex;font-size:.875rem;font-weight:600;gap:.5rem;padding:.75rem 1.25rem;text-decoration:none;transition:all .2s ease}.ical-export-btn:hover{background:var(--calendar-primary);color:var(--calendar-white)}.ical-export-btn svg{height:18px;width:18px}.feast-day-item.is-today{background:linear-gradient(135deg,rgba(255,215,0,.15),rgba(255,165,0,.1));border:2px solid var(--calendar-gold)}.today-badge{background:var(--calendar-gold);border-radius:var(--calendar-radius-full);color:#4a3500;display:inline-block;font-size:.6rem;font-weight:700;margin-left:.5rem;padding:.2rem .5rem;text-transform:uppercase}@media (max-width:768px){.calendar-header{padding:3rem 0 2.5rem}.calendar-title{font-size:2rem}.calendar-description{font-size:1rem;padding:0 1rem}.year-selector{flex-direction:column;max-width:300px;padding:.5rem;width:calc(100% - 2rem)}.year-btn{padding:.75rem 1.5rem;width:100%}.months-grid{gap:1.5rem;grid-template-columns:1fr}.month-card{margin:0 .5rem}.colors-grid,.legend-grid,.saints-grid{grid-template-columns:1fr}.feast-day-item{padding:.875rem 1rem}.feast-date{flex-direction:row;gap:.75rem;min-width:auto}.date-number{font-size:1.375rem}.cta-buttons{flex-direction:column}.btn-primary,.btn-secondary{text-align:center;width:100%}.search-row{flex-direction:column}.filter-select,.search-input{width:100%}}@media (max-width:480px){.calendar-header{padding:2.5rem 0 2rem}.calendar-title{font-size:1.75rem}.month-name{font-size:1.1rem;padding:.875rem 1rem}.feast-day-item{flex-direction:column;gap:.75rem}.feast-date{flex-direction:row;gap:1rem;justify-content:flex-start}.feast-name{font-size:.9rem}.calendar-cta{margin:0 .5rem;padding:2rem 1.25rem}}@media print{.calendar-header{background:none!important;padding:1rem 0}.calendar-description,.calendar-header,.calendar-title{color:#000!important}.calendar-cta,.ical-export-btn,.month-nav,.year-selector{display:none}.month-card{border:1px solid #ccc;box-shadow:none;break-inside:avoid}.feast-day-item{border:none}.feast-day-item.irish-feast{background:#f0f0f0!important}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.feast-day-item:focus-visible,.month-nav-btn:focus-visible,.year-btn:focus-visible{outline:3px solid var(--calendar-primary);outline-offset:2px}@media (prefers-contrast:high){.color-dot,.color-indicator,.rank-badge{border-width:3px}.feast-day-item{border:2px solid}}