.frac-calendar-heading { margin-bottom: 2rem; }
.frac-calendar-upload-previews { display:flex; flex-wrap:wrap; gap:12px; }
.frac-calendar-upload-previews img { width:100px; height:80px; object-fit:cover; border-radius:6px; }
.frac-calendar-upload-previews figure { margin:0; max-width:120px; overflow-wrap:anywhere; font-size:.75rem; }
.frac-calendar-day:target { outline: 2px solid #9a782f; outline-offset: -3px; scroll-margin-block: 120px; }
.frac-calendar-mobile-hint { display: none; font-size: .75rem; color: #645e50; }
.frac-calendar { --calendar-gold: #9a782f; --calendar-ink: #282820; background: #fffefb; border: 1px solid #ded8c9; border-radius: 20px; padding: 1.6rem; box-shadow: 0 10px 35px #29251b08; }
.frac-calendar-toolbar,.frac-calendar-legend,.frac-calendar-date { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.frac-calendar-toolbar h2 { margin: 0; font-size: clamp(1.3rem, 2vw, 2rem); }
.frac-calendar-legend { justify-content: flex-start; flex-wrap: wrap; font-size: .78rem; padding: 1.2rem 0; color: #565349; }
.frac-calendar-gold-key::before { content: ''; display: inline-block; width: 10px; height: 10px; background: #ddc589; border: 1px solid #9a782f; border-radius: 50%; margin-right: .5rem; }
.frac-calendar-week,.frac-calendar-grid { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 5px; }
.frac-calendar-week { margin-bottom: 7px; color: #645e50; text-align: center; font-size: .76rem; text-transform: uppercase; letter-spacing: .1em; }
.frac-calendar-week span { padding: .5rem; }
.frac-calendar-week span:nth-child(n+6) { background: #eeeae1; border-radius: 6px; }
.frac-calendar-day { min-height: 132px; border: 1px solid #e2ded5; border-radius: 11px; padding: .6rem; background: #fff; }
.frac-calendar-day.is-outside { background: #f4f2ed; color: #777369; }
.frac-calendar-day.has-frac-runner { background: linear-gradient(140deg,#fbf5e4,#f1e2ba); border-color: #ac8a40; box-shadow: inset 0 3px #ac8a40; }
.frac-calendar-date { font-size: .82rem; margin-bottom: .5rem; }
.frac-calendar-date button { border: 0; background: transparent; color: #665126; border-radius: 50%; width: 26px; height: 26px; }
.frac-calendar-date button:hover { background: #ede1c4; }
.is-today .frac-calendar-date time { border-radius: 50%; background: #282820; color: #fff; width: 27px; height: 27px; display: grid; place-items: center; }
.frac-calendar-race,.frac-calendar-club-event { display: flex; align-items: center; gap: 5px; color: #353125; padding: .4rem .2rem; font-size: .78rem; text-decoration: none; border-radius: 5px; overflow-wrap: anywhere; }
.frac-calendar-race { font-size: .88rem; font-weight: 700; gap: 7px; color: #282820; }
.frac-calendar-race:hover { background: #ede4cf; }
.frac-calendar-race img { flex: 0 0 32px; width: 32px; height: 24px; object-fit: contain; filter: brightness(.7) saturate(1.25) drop-shadow(0 0 .35px #9a782f); }
.frac-calendar-club-event { display: block; background: #30372f; color: #fff9e9; margin-top: 5px; padding: .5rem; }
.frac-calendar-club-event:hover { background: #4b5246; color: #fff; }
.frac-calendar-club-event small,.frac-calendar-club-event strong { display: block; }
.frac-calendar-club-event.is-cancelled { opacity: .65; text-decoration: line-through; }
.frac-calendar-runner-label { display: inline-block; color: #69501b; text-transform: uppercase; letter-spacing: .06em; font-size: .61rem; font-weight: bold; }
.frac-calendar-dialog { border: 1px solid #c4ab75; border-radius: 18px; padding: 2rem; width: min(960px,94vw); max-height: 90vh; color: #282820; }
.frac-calendar-dialog::backdrop { background: #172017b3; backdrop-filter: blur(4px); }
.frac-calendar-dialog h2 { font-size: 1.6rem; }
.frac-calendar-dialog textarea { width: 100%; }
.frac-calendar-event-page { max-width: 900px; margin: 2rem auto; }
.frac-calendar-event-page h1 { overflow-wrap: anywhere; }
.frac-calendar-event-meta { color: #64543a; font-weight: 600; }
.frac-calendar-event-image { width: 100%; max-height: 520px; object-fit: contain; border-radius: 16px; background: #f2eee4; margin: 1.5rem 0; }
.frac-calendar-event-gallery { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,280px),1fr)); gap: 1rem; }
.frac-calendar-event-page .frac-body-copy { white-space: pre-wrap; }
.frac-calendar-attendance { display: flex; align-items: center; gap: 2rem; margin: 2rem 0; padding: 1.5rem 0; border-top: 1px solid #ded8c9; border-bottom: 1px solid #ded8c9; }
.frac-meeting-group-title { margin-top: 2.5rem; }
#past-meetings { scroll-margin-top: 120px; }
.frac-past-meetings-search,.frac-past-meetings-pagination { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 1rem 0; }
.frac-past-meetings-search { align-items: flex-end; }
.frac-past-meetings-course { flex: 1 1 240px; max-width: 480px; min-width: 0; }
.frac-past-meetings-course label { display: block; margin-bottom: 8px; }
.frac-past-meetings-course input { width: 100%; min-width: 0; padding: 12px; border: 1px solid #9d9483; border-radius: 6px; background: #fffefb; color: #282820; }
.frac-past-meetings-pagination { margin-top: 24px; }
.frac-horse-race-history { display: grid; gap: 24px; margin-bottom: 24px; }
.frac-horse-race-group > summary { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px 18px; padding: 12px 0; cursor: pointer; border-bottom: 1px solid #ded8c9; margin-bottom: 12px; }
.frac-horse-race-group > summary::before { content: '+'; font-size: 20px; }
.frac-horse-race-group[open] > summary::before { content: '−'; }
.frac-horse-race-group > summary strong { font-size: 1.25rem; }
.frac-horse-race-group > summary span { font-size: .85rem; }
.frac-horse-race-group .frac-meeting-card > div { min-width: 0; overflow-wrap: anywhere; }
.frac-meeting-index { display: grid; gap: 12px; }
.frac-meeting-card { display: flex; align-items: center; gap: 1.5rem; border: 1px solid #ded8c9; border-radius: 12px; padding: 1.4rem; color: #282820; text-decoration: none; background: #fffefb; }
.frac-meeting-card:hover { background: #f5ecd7; border-color: #ac8a40; color: #282820; }
.frac-meeting-card time { display: grid; min-width: 76px; text-align: center; color: #735823; }
.frac-meeting-card time strong { font-size: 2rem; line-height: 1.2; }
.frac-meeting-card time span { font-size: .75rem; }
.frac-meeting-card h3,.frac-meeting-card p { margin: 0 0 .3rem; }
.frac-meeting-card > span:last-child { margin-left: auto; }
@media(max-width: 800px) { .frac-calendar-mobile-hint { display: block; } .frac-calendar { padding: .8rem; } .frac-calendar-scroll { overflow-x: auto; } .frac-calendar-week,.frac-calendar-grid { min-width: 770px; } .frac-calendar-day { min-height: 110px; } .frac-calendar-toolbar { flex-wrap: wrap; } .frac-calendar-dialog { padding: 1.2rem; } .frac-calendar-dialog .frac-two-grid { grid-template-columns: 1fr; } .frac-meeting-card { gap: .8rem; padding: 1rem; } }

.frac-calendar-dialog .frac-form { display: grid; grid-template-columns: minmax(0,1fr); }
.frac-calendar-dialog .frac-form > * { min-width: 0; }
