.calendar-title-band{margin-bottom:26px}.calendar-page{max-width:1180px}.calendar-legend{display:flex;flex-wrap:wrap;gap:8px 22px;padding:12px 0 16px;border-top:2px solid var(--ink);border-bottom:1px solid rgba(0,0,0,.18);font-family:jetbrains mono,monospace;font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.calendar-legend-item{display:inline-flex;align-items:center;gap:8px}.calendar-swatch{width:12px;height:12px;display:inline-block;background:var(--ink)}.calendar-swatch.fam-robotics{background:var(--fam-robotics)}.calendar-swatch.fam-3d-printing{background:var(--fam-3d-printing)}.month-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:26px}.month{min-width:0}.month-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px}.month-head h2{font-family:archivo black,sans-serif;font-size:clamp(1.45rem,3vw,2rem);line-height:1;letter-spacing:-.02em;text-transform:uppercase}.month-head span{color:var(--muted);font-family:jetbrains mono,monospace;font-size:9px;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.weekday-head,.month-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekday-head{border:2px solid var(--ink);border-bottom:0;background:var(--ink);color:var(--paper)}.weekday-head span{padding:7px 5px;font-family:jetbrains mono,monospace;font-size:9px;font-weight:700;letter-spacing:.08em;text-align:center;text-transform:uppercase}.month-days{border:2px solid var(--ink);border-top:1px solid var(--ink)}.calendar-blank,.calendar-day{min-height:98px;border-right:1px solid rgba(0,0,0,.2);border-bottom:1px solid rgba(0,0,0,.2)}.calendar-blank:nth-child(7n),.calendar-day:nth-child(7n){border-right:0}.calendar-day{padding:7px 6px 5px;background:rgba(255,255,255,.12)}.calendar-day:nth-last-child(-n+7){border-bottom:0}.calendar-day.is-past{opacity:.48}.calendar-day.has-events{background:var(--paper-deep);opacity:1}.calendar-day.is-past.has-events{opacity:.55}.calendar-day.is-past .calendar-event{filter:grayscale(1)}.calendar-day.is-past .calendar-event:hover,.calendar-day.is-past .calendar-event:focus-visible{transform:none}.calendar-date{display:block;font-family:jetbrains mono,monospace;font-size:11px;font-weight:700;line-height:1}.calendar-events{display:grid;gap:4px;margin-top:10px}.calendar-event{display:grid;gap:2px;padding:5px 4px;border-top:3px solid var(--ink);color:var(--ink);text-decoration:none;transition:transform .15s ease}.calendar-event:hover,.calendar-event:focus-visible{transform:translateY(-2px)}.calendar-event.fam-robotics{border-top-color:var(--fam-robotics)}.calendar-event.fam-3d-printing{border-top-color:var(--fam-3d-printing)}.calendar-event strong{font-family:archivo black,sans-serif;font-size:12px;line-height:1}.calendar-event span:not(.sr-only){color:var(--muted);font-family:jetbrains mono,monospace;font-size:8px;line-height:1.25}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:760px){.month-grid{grid-template-columns:1fr;gap:36px}}@media(max-width:480px){.month-head{align-items:flex-start;flex-direction:column;gap:5px}.calendar-blank,.calendar-day{min-height:74px}.calendar-day{padding:6px 3px 4px}.calendar-events{margin-top:7px}.calendar-event{padding:4px 2px}.calendar-event strong{font-size:10px}.calendar-event span:not(.sr-only){font-size:7px}}@media(prefers-reduced-motion:reduce){.calendar-event{transition:none}.calendar-event:hover,.calendar-event:focus-visible{transform:none}}@media print{.calendar-legend{break-after:avoid}.month-grid{gap:16px;margin-top:16px}.calendar-blank,.calendar-day{min-height:76px}.calendar-event:hover,.calendar-event:focus-visible{transform:none}}