.psc-icon { fill: none; height: 1em; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.8; width: 1em; }
.psc-icon--filled { fill: currentColor; stroke-width: 1.4; }
.psc-icon__fill { fill: currentColor; stroke: none; }
.psc-calendar__nav-button .psc-icon { display: block; font-size: 1.1rem; }
.psc-calendar__toolbar { align-items: center; display: flex; gap: .65rem; justify-content: flex-end; min-width: 0; }
.psc-calendar__actions { display: flex; gap: .35rem; }
.psc-calendar__action-button { align-items: center; background: transparent; border: 1px solid var(--psc-button-border-color, var(--psc-border-color)); border-radius: var(--psc-button-radius); color: var(--psc-text-color); cursor: pointer; display: inline-flex; font-size: var(--psc-navigation-font-size); font-weight: var(--psc-navigation-font-weight); gap: .35rem; min-height: 2.25rem; padding: var(--psc-button-padding-y, 7px) var(--psc-button-padding-x, 11px); }
.psc-calendar__action-button:hover { background: var(--psc-button-hover-color); border-color: var(--psc-button-hover-color); color: var(--psc-button-hover-text-color, var(--psc-button-text-color)); }
.psc-calendar[data-psc-button-style="filled"] .psc-calendar__action-button { background: var(--psc-button-background); border-color: var(--psc-button-background); color: var(--psc-button-text-color); }
.psc-calendar[data-psc-button-style="outline"] .psc-calendar__action-button { background: transparent; border-color: var(--psc-button-border-color, var(--psc-border-color)); color: var(--psc-text-color); }
.psc-calendar[data-psc-button-style="ghost"] .psc-calendar__action-button { background: transparent; border-color: transparent; color: var(--psc-text-color); }
.psc-calendar[data-psc-event-time-position] .psc-calendar__event { align-items: flex-start; display: flex; flex-direction: row; }
.psc-calendar__event-icon { color: var(--psc-event-icon-color); display: inline-flex; flex: 0 0 auto; font-size: var(--psc-event-icon-size); margin-top: .08em; }
.psc-calendar__event-content { display: inherit; flex: 1 1 auto; min-width: 0; }
.psc-calendar[data-psc-event-time-position="above"] .psc-calendar__event-content,
.psc-calendar[data-psc-event-time-position="below"] .psc-calendar__event-content { flex-direction: column; }
.psc-calendar[data-psc-event-time-position="inline"] .psc-calendar__event-content,
.psc-calendar[data-psc-event-time-position="inline_after"] .psc-calendar__event-content { align-items: baseline; column-gap: var(--psc-event-time-gap, 5px); flex-direction: row; }
.psc-calendar[data-psc-event-time-position="badge"] .psc-calendar__event-content { align-items: center; column-gap: var(--psc-event-time-gap, 5px); flex-direction: row; }
.psc-calendar[data-psc-event-time-position="column"] .psc-calendar__event-content { align-items: start; display: grid; grid-template-columns: minmax(var(--psc-event-time-min-width, 0), auto) minmax(0, 1fr); }

.psc-schedule { background: var(--psc-day-background); min-width: 0; overflow: hidden; }
.psc-schedule__day-headings,
.psc-schedule__all-day-row { display: grid; grid-template-columns: 72px repeat(var(--psc-schedule-days), minmax(110px, 1fr)); }
.psc-schedule__time-corner,
.psc-schedule__all-day-label { background: var(--psc-weekday-background); border-bottom: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); border-right: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); }
.psc-schedule__day-heading { align-items: center; background: var(--psc-weekday-background); border-bottom: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); border-right: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); color: var(--psc-weekday-text-color); display: flex; gap: .45rem; justify-content: center; min-height: 58px; padding: .55rem; text-transform: uppercase; }
.psc-schedule__day-heading:last-child { border-right: 0; }
.psc-schedule__day-heading.is-today .psc-schedule__day-date { background: var(--psc-today-background); color: var(--psc-today-text-color); }
.psc-schedule__weekday-name { font-size: var(--psc-weekday-font-size); font-weight: var(--psc-weekday-font-weight); }
.psc-schedule__day-date { align-items: center; border-radius: 50%; display: inline-flex; font-size: 1rem; font-weight: 700; height: 2rem; justify-content: center; min-width: 2rem; padding: 0 .38rem; }
.psc-schedule__all-day-label { align-items: center; color: var(--psc-muted-color); display: flex; font-size: 11px; font-weight: 700; justify-content: flex-end; padding: .45rem .55rem; text-transform: uppercase; }
.psc-schedule__all-day-cell { border-bottom: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); border-right: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); min-height: 48px; padding: .35rem; }
.psc-schedule__all-day-cell:last-child { border-right: 0; }
.psc-schedule__scroll { max-width: 100%; overflow: auto; }
.psc-schedule__canvas { min-width: calc(72px + (var(--psc-schedule-days) * 110px)); }
.psc-schedule__timeline { position: relative; }
.psc-schedule__time-axis { bottom: 0; left: 0; position: absolute; top: 0; width: 72px; }
.psc-schedule__time-label { color: var(--psc-muted-color); font-size: 11px; position: absolute; right: .55rem; top: calc(var(--psc-hour-index) * var(--psc-timeline-hour-height)); transform: translateY(-50%); }
.psc-schedule__day-columns { bottom: 0; display: grid; grid-template-columns: repeat(var(--psc-schedule-days), minmax(110px, 1fr)); left: 72px; position: absolute; right: 0; top: 0; }
.psc-schedule__day-column { background: var(--psc-day-background); border-left: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); position: relative; }
.psc-schedule__day-column.is-weekend { background: var(--psc-weekend-background); }
.psc-schedule__day-column.is-today { box-shadow: inset 0 0 0 9999px color-mix(in srgb, var(--psc-today-background) 6%, transparent); }
.psc-schedule__hour-line { border-top: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); left: 0; position: absolute; right: 0; top: calc(var(--psc-hour-index) * var(--psc-timeline-hour-height)); }
.psc-schedule__event { --psc-event-color: var(--psc-source-color, var(--psc-accent-color)); background: transparent; border: 0; border-radius: var(--psc-event-radius); color: var(--psc-text-color); cursor: pointer; display: flex; left: calc((100% / var(--psc-event-columns)) * var(--psc-event-column) + 2px); min-height: 26px; overflow: hidden; padding: 4px 6px; position: absolute; text-align: left; top: calc((var(--psc-event-start) / 60) * var(--psc-timeline-hour-height)); transition: filter .16s ease, transform .16s ease, box-shadow .16s ease; width: calc((100% / var(--psc-event-columns)) - 4px); z-index: 2; height: max(26px, calc((var(--psc-event-duration) / 60) * var(--psc-timeline-hour-height))); }
.psc-calendar[data-psc-event-color-mode="accent"] .psc-schedule__event { --psc-event-color: var(--psc-accent-color); }
.psc-calendar[data-psc-event-style="filled"] .psc-schedule__event { background: color-mix(in srgb, var(--psc-event-color) var(--psc-event-background-opacity, 100%), transparent); border: var(--psc-event-border-width, 1px) solid var(--psc-event-color); color: var(--psc-event-text-color); }
.psc-calendar[data-psc-event-style="outline"] .psc-schedule__event { border: var(--psc-event-border-width, 1px) solid var(--psc-event-color); }
.psc-calendar[data-psc-event-style="accent"] .psc-schedule__event { border-left: 4px solid var(--psc-event-color); }
.psc-calendar[data-psc-event-style="dot"] .psc-schedule__event { padding-left: 18px; }
.psc-calendar[data-psc-event-style="dot"] .psc-schedule__event::before { background: var(--psc-event-color); border-radius: 50%; content: ''; height: 8px; left: 6px; position: absolute; top: 8px; width: 8px; }
.psc-calendar[data-psc-event-hover="darken"] .psc-schedule__event:hover { filter: brightness(.9); z-index: 4; }
.psc-calendar[data-psc-event-hover="raise"] .psc-schedule__event:hover { box-shadow: 0 6px 14px rgb(15 23 42 / 16%); transform: translateY(-1px); z-index: 4; }
.psc-calendar[data-psc-event-hover="glow"] .psc-schedule__event:hover { box-shadow: 0 0 0 2px color-mix(in srgb, var(--psc-event-color) 35%, transparent), 0 8px 24px color-mix(in srgb, var(--psc-event-color) 25%, transparent); z-index: 4; }
.psc-schedule__event-time { color: var(--psc-event-time-color, currentColor); font-size: var(--psc-event-time-size, 10px); font-weight: var(--psc-event-time-weight, 600); opacity: .9; }
.psc-schedule__event-title { color: var(--psc-event-title-color, currentColor); font-size: var(--psc-event-font-size, 11px); font-weight: var(--psc-event-font-weight, 700); line-height: var(--psc-event-title-line-height, 1.2); overflow: hidden; }
.psc-calendar[data-psc-event-style="filled"] .psc-schedule__event-time,
.psc-calendar[data-psc-event-style="filled"] .psc-schedule__event-title { color: var(--psc-event-text-color); }
.psc-schedule--day .psc-schedule__day-headings,
.psc-schedule--day .psc-schedule__all-day-row { grid-template-columns: 72px minmax(220px, 1fr); }
.psc-schedule--day .psc-schedule__canvas { min-width: 320px; }

.psc-year-view { padding: 1rem 1.25rem 1.5rem; }
.psc-year-view__date-group { border: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); border-bottom: 0; }
.psc-year-view__date-group:last-child { border-bottom: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); }
.psc-year-view__date-heading { align-items: center; background: var(--psc-weekday-background); border-bottom: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); color: var(--psc-weekday-text-color); display: flex; font-size: var(--psc-weekday-font-size); font-weight: var(--psc-weekday-font-weight); justify-content: space-between; padding: .65rem .85rem; }
.psc-year-view__events { display: grid; }
.psc-year-view__event { --psc-event-color: var(--psc-source-color, var(--psc-accent-color)); border-bottom: var(--psc-grid-border-width) solid var(--psc-grid-border-color, var(--psc-border-color)); padding: .65rem .85rem; }
.psc-year-view__event:last-child { border-bottom: 0; }
.psc-calendar[data-psc-event-color-mode="accent"] .psc-year-view__event { --psc-event-color: var(--psc-accent-color); }
.psc-year-view__event-button { align-items: center; background: transparent; border: 0; color: var(--psc-text-color); cursor: pointer; display: grid; font: inherit; gap: .65rem; grid-template-columns: auto minmax(0, 1fr); padding: 0; text-align: left; width: 100%; }
.psc-year-view__event-button.has-time { grid-template-columns: minmax(80px, 120px) auto minmax(0, 1fr); }
.psc-year-view__time { color: var(--psc-event-time-color, var(--psc-muted-color)); font-size: var(--psc-event-time-size); font-weight: var(--psc-event-time-weight, 500); white-space: nowrap; }
.psc-year-view__marker { align-items: center; color: var(--psc-event-icon-color); display: inline-flex; font-size: var(--psc-event-icon-size); justify-content: center; min-width: .65rem; }
.psc-year-view__marker:empty { background: var(--psc-event-color); border-radius: 50%; height: .55rem; width: .55rem; }
.psc-year-view__title { color: var(--psc-event-title-color, var(--psc-text-color)); font-size: var(--psc-event-font-size); font-weight: var(--psc-event-font-weight); line-height: var(--psc-event-title-line-height, 1.25); min-width: 0; }
.psc-year-view__event-button:hover .psc-year-view__title { color: var(--psc-event-title-hover-color, var(--psc-accent-color)); }
.psc-year-view__location,
.psc-year-view__description { margin-left: calc(var(--psc-event-icon-size) + 1.3rem); }
.psc-year-view__event.has-time .psc-year-view__location,
.psc-year-view__event.has-time .psc-year-view__description { margin-left: calc(120px + .65rem + var(--psc-event-icon-size) + .65rem); }
.psc-year-view__location { align-items: center; color: var(--psc-accent-color); display: inline-flex; font-size: 12px; gap: .3rem; margin-top: .45rem; text-decoration: none; }
.psc-year-view__description { color: var(--psc-muted-color); margin-bottom: 0; margin-top: .45rem; }
/* Icon variants use a controlled filled chip instead of filling complex SVG paths. */
.psc-icon--filled { fill: none; }
.psc-calendar__event-icon .psc-icon--filled,
.psc-year-view__marker .psc-icon--filled,
.psc-schedule__event-icon .psc-icon--filled {
	background: var(--psc-event-icon-color);
	border-radius: .32em;
	color: #fff;
	padding: .16em;
}
.psc-schedule__event { flex-direction: row; gap: 4px; }
.psc-schedule__event-icon { color: var(--psc-event-icon-color); display: inline-flex; flex: 0 0 auto; font-size: var(--psc-event-icon-size); margin-top: 1px; }
.psc-schedule__event-copy { display: flex; flex: 1 1 auto; min-width: 0; }
.psc-calendar[data-psc-event-time-position="above"] .psc-schedule__event-copy,
.psc-calendar[data-psc-event-time-position="below"] .psc-schedule__event-copy { flex-direction: column; }
.psc-calendar[data-psc-event-time-position="inline"] .psc-schedule__event-copy,
.psc-calendar[data-psc-event-time-position="inline_after"] .psc-schedule__event-copy { align-items: baseline; column-gap: var(--psc-event-time-gap, 5px); flex-direction: row; }
.psc-calendar[data-psc-event-time-position="badge"] .psc-schedule__event-copy { align-items: center; column-gap: var(--psc-event-time-gap, 5px); flex-direction: row; }
.psc-calendar[data-psc-event-time-position="column"] .psc-schedule__event-copy { align-items: start; display: grid; grid-template-columns: minmax(var(--psc-event-time-min-width, 0), auto) minmax(0, 1fr); }
.psc-calendar__print-period { display: none; }

/* Design schema 9: ISO week number in the week-view corner cell. */
.psc-schedule { --psc-time-axis-width: 72px; }
.psc-calendar[data-psc-show-week-numbers="1"] .psc-schedule--week { --psc-time-axis-width: max(72px, var(--psc-week-number-width, 48px)); }
.psc-schedule__day-headings,
.psc-schedule__all-day-row { grid-template-columns: var(--psc-time-axis-width) repeat(var(--psc-schedule-days), minmax(110px, 1fr)); }
.psc-schedule__canvas { min-width: calc(var(--psc-time-axis-width) + (var(--psc-schedule-days) * 110px)); }
.psc-schedule__time-axis { width: var(--psc-time-axis-width); }
.psc-schedule__day-columns { left: var(--psc-time-axis-width); }
.psc-schedule__time-corner.has-week-number {
	align-items: center;
	background: var(--psc-week-number-background, var(--psc-weekday-background));
	border-color: var(--psc-week-number-border-color, var(--psc-grid-border-color, var(--psc-border-color)));
	color: var(--psc-week-number-text-color, var(--psc-weekday-text-color));
	display: flex;
	font-family: var(--psc-week-number-font-family, inherit);
	font-size: var(--psc-week-number-font-size, 11px);
	font-weight: var(--psc-week-number-font-weight, 700);
	justify-content: center;
	padding: var(--psc-week-number-padding, 6px);
	text-align: center;
}
.psc-schedule--day .psc-schedule__day-headings,
.psc-schedule--day .psc-schedule__all-day-row { grid-template-columns: var(--psc-time-axis-width) minmax(220px, 1fr); }
