*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#f5f5f5;min-height:100vh;padding:1rem;color:#333}.container{max-width:1200px;margin:0 auto;background:#fff;border-radius:1rem;box-shadow:0 4px 20px #0000001a;overflow:hidden}header{background:linear-gradient(135deg,#0ea5e9,#0284c7);color:#fff;padding:1.5rem 2rem;text-align:center}header h1{font-size:1.75rem;margin-bottom:.25rem;font-weight:700}.subtitle{font-size:.9rem;opacity:.9}main{padding:1.5rem}.input-section{display:flex;flex-direction:column;gap:.5rem}.inputs-row{display:flex;gap:1rem;align-items:flex-end}.input-group{display:flex;flex-direction:column;gap:.5rem;flex:1}label{font-weight:600;font-size:.875rem;color:#555}.label-icon{padding-right:.375rem}.input-field{padding:.625rem;border:2px solid #e0e0e0;border-radius:.5rem;font-size:.9rem;transition:border-color .2s}.input-field:focus{outline:none;border-color:#0ea5e9}.date-picker-wrapper{display:flex;gap:.5rem;align-items:center}.date-input-with-nav{flex:1}.date-nav-btn{background:#fff;border:2px solid #e0e0e0;border-radius:.5rem;width:2.5rem;height:2.5rem;font-size:1rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;color:#0ea5e9}.date-nav-btn:hover{background:#0ea5e9;color:#fff;border-color:#0ea5e9;transform:scale(1.05)}.date-nav-btn:active{transform:scale(.95)}.help-text{font-size:.75rem;color:#888;font-style:italic;margin-left:.25rem}.btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;padding:1rem 2rem;font-size:1.1rem;font-weight:600;border-radius:.5rem;cursor:pointer;transition:transform .2s,box-shadow .2s;margin-top:1rem}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 4px 12px #667eea66}.btn-primary:active{transform:translateY(0)}.result-section,.error-section,.loading-section{margin-top:1.5rem;padding-top:1.5rem;border-top:2px solid #f0f0f0}.liturgical-day-container{background:#fff;border:2px solid #e5e7eb;border-radius:1rem;overflow:hidden;margin-bottom:1.5rem}.liturgical-day-header{background:#f9fafb;border-bottom:2px solid #e5e7eb;padding:1rem 1.5rem}.liturgical-day-header h2{font-size:1.15rem;font-weight:600;margin:0;color:#374151}.section-subtitle{font-weight:700;font-size:1rem;color:#1f2937;margin-bottom:.75rem;padding:.5rem 1rem;background:#f3f4f6;border-left:4px solid #0ea5e9}.day-info-section,.celebrations-section{padding:1.5rem;border-bottom:2px solid #e5e7eb}.celebrations-section{border-bottom:none}.celebration-container{margin-bottom:1rem}.celebration-container:last-child{margin-bottom:0}.celebration-label{font-weight:600;font-size:.9rem;color:#6b7280;margin-bottom:.5rem;padding-left:.5rem}.content-box{background:#f9fafb;border:2px solid #e5e7eb;border-radius:.5rem;padding:1rem}.celebration-detail{display:grid;grid-template-columns:120px 1fr;gap:.5rem;margin-bottom:.4rem;font-size:.875rem}.celebration-detail strong{color:#555}.celebration-detail span{color:#333}.badge{display:inline-block;padding:.2rem .6rem;border-radius:1rem;font-size:.75rem;font-weight:600;margin-right:.4rem;margin-bottom:.4rem}.badge-rank{background:#0ea5e9;color:#fff}.badge-precedence{background:#e0e0e0;color:#555}.badge-color{color:#fff;text-transform:uppercase}.badge-holy{background:gold;color:#333}.trace-details{margin-top:1rem;background:#f8f9fa;border-radius:.5rem;padding:.75rem}.trace-details summary{cursor:pointer;font-weight:600;color:#0ea5e9;-webkit-user-select:none;user-select:none;font-size:.875rem}.trace-details pre{margin-top:.75rem;padding:.75rem;background:#fff;border-radius:.5rem;overflow-x:auto;font-size:.75rem;line-height:1.5;color:#333}.error-section{color:#d32f2f}.error-message{background:#ffebee;padding:1rem;border-radius:.5rem;border-left:4px solid #d32f2f}.loading-section{text-align:center;padding:3rem 0}.spinner{width:40px;height:40px;margin:0 auto 1rem;border:4px solid #f0f0f0;border-top-color:#0ea5e9;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}footer{background:#f8f9fa;padding:1.5rem 2rem;text-align:center;color:#666;font-size:.9rem}footer a{color:#0ea5e9;text-decoration:none;font-weight:600}footer a:hover{text-decoration:underline}@media(max-width:768px){.inputs-row{flex-direction:column}.result-grid{grid-template-columns:1fr}.primary-card,.season-card,.secondary-card{grid-column:1 / -1;grid-row:auto}}@media(max-width:600px){body{padding:1rem .5rem}header h1{font-size:1.5rem}main{padding:1.5rem}.celebration-detail{grid-template-columns:1fr;gap:.25rem}}.tabs{display:flex;gap:.5rem;border-bottom:2px solid #e0e0e0;margin-bottom:1.5rem}.tab-button{background:transparent;border:none;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;color:#666;cursor:pointer;border-bottom:3px solid transparent;transition:all .2s;margin-bottom:-2px}.tab-button:hover{color:#0ea5e9}.tab-button.active{color:#0ea5e9;border-bottom-color:#0ea5e9}.tab-content{display:none}.tab-content.active{display:block}.schema-section{animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.schema-section h2{color:#0ea5e9;margin-bottom:1rem;font-size:1.5rem}.schema-intro{background:#e3f2fd;padding:1rem;border-radius:.5rem;border-left:4px solid #0ea5e9;margin-bottom:1.5rem;font-size:.95rem;line-height:1.6}.schema-card{background:#f8f9fa;border-radius:.75rem;padding:1.5rem;margin-bottom:1.5rem;border:2px solid #e0e0e0}.schema-card h3{color:#0284c7;font-size:1.25rem;margin-bottom:.5rem}.schema-description{color:#666;font-size:.9rem;margin-bottom:1.25rem;font-style:italic}.field-list{display:flex;flex-direction:column;gap:1rem}.field-item{background:#fff;padding:1rem;border-radius:.5rem;border-left:4px solid #0ea5e9}.field-item.required{border-left-color:#0ea5e9}.field-item.optional{border-left-color:#94a3b8}.field-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem;flex-wrap:wrap}.field-name{font-family:Courier New,monospace;font-weight:700;color:#0284c7;font-size:1rem}.field-type{font-family:Courier New,monospace;font-size:.85rem;color:#64748b;background:#f1f5f9;padding:.2rem .5rem;border-radius:.25rem}.badge-required{background:#0ea5e9;color:#fff;font-size:.7rem;padding:.2rem .5rem;border-radius:.25rem;font-weight:700}.badge-optional{background:#94a3b8;color:#fff;font-size:.7rem;padding:.2rem .5rem;border-radius:.25rem;font-weight:700}.field-desc{color:#475569;font-size:.9rem;line-height:1.6}.field-example{background:#f1f5f9;padding:.5rem .75rem;border-radius:.375rem;margin-top:.5rem;font-size:.85rem;font-family:Courier New,monospace;color:#1e293b;border-left:3px solid #cbd5e1}.field-link{display:inline-block;margin-top:.5rem;color:#0ea5e9;text-decoration:none;font-weight:600;font-size:.85rem}.field-link:hover{text-decoration:underline}.precedence-table{display:flex;flex-direction:column;gap:.5rem}.precedence-item{background:#fff;padding:.75rem;border-radius:.375rem;border-left:3px solid #cbd5e1;font-family:Courier New,monospace;font-size:.85rem;color:#334155;transition:all .2s}.precedence-item:hover{border-left-color:#0ea5e9;background:#f8fafc}.precedence-item code{color:#0284c7;font-weight:600}.code-example{background:#1e293b;color:#e2e8f0;padding:1.25rem;border-radius:.5rem;font-family:Courier New,monospace;font-size:.85rem;line-height:1.6;overflow-x:auto;border:2px solid #334155}.calendar-info-section{background:#f8fafc;padding:1.5rem;border-radius:.75rem;margin-bottom:1.5rem;border:1px solid #e2e8f0}.calendar-info-section h3{font-size:1.25rem;color:#0f172a;margin-bottom:1rem}.calendar-hierarchy{background:#fff;padding:1rem;border-radius:.5rem;margin-bottom:1rem;border-left:4px solid #0ea5e9}.calendar-chain{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-family:Courier New,monospace;font-size:.9rem}.calendar-chain-item{padding:.25rem .75rem;background:#e0f2fe;border-radius:.25rem;color:#0c4a6e;font-weight:500}.calendar-chain-item.active{background:#0ea5e9;color:#fff}.calendar-chain-arrow{color:#94a3b8}.calendar-rules-details{background:#fff;border-radius:.5rem;border:1px solid #e2e8f0}.calendar-rules-details summary{padding:1rem;cursor:pointer;font-weight:600;color:#0f172a;-webkit-user-select:none;user-select:none}.calendar-rules-details summary:hover{background:#f8fafc}.calendar-rules{padding:0 1rem 1rem}.calendar-rule-group{margin-bottom:1.5rem;position:relative}.calendar-rule-group-header{font-weight:600;color:#0ea5e9;margin-bottom:.75rem;font-size:1rem;display:flex;align-items:center}.calendar-rule{background:#f8fafc;padding:.75rem;border-radius:.5rem;margin-bottom:.5rem;border-left:3px solid #cbd5e1;font-size:.875rem}.calendar-rule-id{font-family:Courier New,monospace;color:#64748b;font-size:.75rem;margin-bottom:.25rem}.calendar-rule-main{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.calendar-rule-action{padding:.125rem .5rem;border-radius:.25rem;font-weight:600;font-size:.75rem;text-transform:uppercase}.calendar-rule-action.add{background:#dcfce7;color:#166534}.calendar-rule-action.replace{background:#fef3c7;color:#92400e}.calendar-rule-action.suppress{background:#fee2e2;color:#991b1b}.calendar-rule-celebration-id{font-family:Courier New,monospace;color:#0f172a}.calendar-rule-details{margin-top:.5rem;display:flex;gap:.75rem;flex-wrap:wrap;font-size:.8rem}.calendar-rule-detail{display:flex;align-items:center;gap:.25rem}.calendar-rule-detail-label{color:#64748b}.calendar-rule-detail-value{font-weight:500;color:#0f172a}.calendar-rule-date-link{background:#0ea5e9;color:#fff;border:none;padding:.25rem .5rem;border-radius:.25rem;font-size:.8rem;font-weight:500;cursor:pointer;transition:background .2s;font-family:inherit}.calendar-rule-date-link:hover{background:#0284c7;transform:translateY(-1px)}.calendar-rule-date-link:active{transform:translateY(0)}@media(max-width:768px){.schema-card{padding:1rem}.field-header{flex-direction:column;align-items:flex-start}.calendar-chain,.calendar-rule{font-size:.8rem}}.compare-results-section{margin-top:1.5rem}.compare-table{width:100%;border-collapse:collapse;background:#fff;border-radius:.5rem;overflow:hidden;box-shadow:0 1px 3px #0000001a}.compare-table thead{background:linear-gradient(135deg,#0ea5e9,#0284c7);color:#fff}.compare-table th{padding:.75rem 1rem;text-align:left;font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em}.compare-table tbody tr{border-bottom:1px solid #e2e8f0;transition:background-color .2s}.compare-table tbody tr:hover{background-color:#f8fafc}.compare-table tbody tr:last-child{border-bottom:none}.compare-table td{padding:.875rem 1rem;vertical-align:middle;font-size:.9rem}.compare-table td strong{color:#0284c7;font-weight:600}.catalog-search-row{display:flex;gap:1rem;align-items:flex-end}.catalog-stats{margin-top:.5rem;font-size:.875rem;color:#64748b}.catalog-list{display:flex;flex-direction:column;gap:.5rem}.catalog-entry{padding:.875rem 1rem;background:#fff;border:1px solid #e2e8f0;border-radius:.5rem;cursor:pointer;transition:border-color .15s,box-shadow .15s}.catalog-entry:hover{border-color:#3b82f6;box-shadow:0 1px 4px #3b82f626}.catalog-entry-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.375rem}.catalog-entry-id{font-size:.95rem;font-weight:600;color:#1e293b}.catalog-entry-badges{display:flex;flex-wrap:wrap;gap:.375rem}.catalog-badge{display:inline-block;padding:.15rem .5rem;border-radius:.25rem;font-size:.75rem;font-weight:600;white-space:nowrap}.catalog-badge-suppressed{background:#fecaca;color:#991b1b}.catalog-color-dots{display:inline-flex;gap:.25rem;align-items:center}.catalog-color-dot{display:inline-block;width:12px;height:12px;border-radius:50%;border:1px solid #cbd5e1}.catalog-holy-day{font-size:.8rem}.catalog-overlay{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.catalog-detail-modal{background:#fff;border-radius:.75rem;box-shadow:0 8px 30px #0003;max-width:900px;width:95%;max-height:80vh;overflow-y:auto}.catalog-detail-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid #e2e8f0}.catalog-detail-header h3{margin:0;font-size:1.1rem}.catalog-detail-close{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#64748b;padding:0 .25rem;line-height:1}.catalog-detail-close:hover{color:#1e293b}.catalog-detail-body{padding:1.25rem}.catalog-detail-table{width:100%;border-collapse:collapse;font-size:.875rem}.catalog-detail-table th,.catalog-detail-table td{padding:.625rem .75rem;text-align:left;border-bottom:1px solid #e2e8f0}.catalog-detail-table th{background:#f8fafc;font-weight:600;color:#475569;font-size:.8rem;text-transform:uppercase;letter-spacing:.025em}.catalog-row-suppressed{background:#fef2f2;text-decoration:line-through;color:#991b1b}
