.schedule-overview { margin-bottom: 18px; padding: 18px; border: 1px solid var(--panel-border, var(--border)); border-radius: 16px; background: radial-gradient(circle at 92% 8%, color-mix(in srgb, var(--accent) 16%, transparent), transparent 34%), var(--panel, var(--card)); box-shadow: var(--shadow); } .schedule-overview-head, .schedule-overview-card-head, .schedule-overview-next, .schedule-overview-lesson, .schedule-overview-state { display: flex; align-items: center; } .schedule-overview-head, .schedule-overview-card-head { justify-content: space-between; gap: 16px; } .schedule-overview-head { margin-bottom: 14px; } .schedule-overview-kicker, .schedule-overview-card-head span:first-child { color: var(--accent); font-size: 11px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; } .schedule-overview-head h2, .schedule-overview-card h3, .schedule-overview-next h4, .schedule-overview-next p, .schedule-overview-empty { margin: 0; } .schedule-overview-head h2 { margin-top: 3px; font-size: 20px; } .schedule-overview-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; } .schedule-overview-card { min-width: 0; padding: 16px; border: 1px solid var(--panel-border, var(--border)); border-radius: 12px; background: color-mix(in srgb, var(--panel, var(--card)) 88%, transparent); } .schedule-overview-card.is-next { border-color: color-mix(in srgb, var(--accent) 34%, var(--panel-border, var(--border))); background: color-mix(in srgb, var(--accent) 7%, var(--panel, var(--card))); } .schedule-overview-card h3 { margin-top: 3px; font-size: 18px; } .schedule-overview-count, .schedule-overview-badge, .schedule-overview-type { display: inline-flex; align-items: center; justify-content: center; border-radius: 999px; font-weight: 800; } .schedule-overview-count { min-width: 34px; min-height: 34px; background: color-mix(in srgb, var(--accent) 13%, transparent); color: var(--accent); } .schedule-overview-badge, .schedule-overview-type { padding: 5px 9px; background: var(--accent); color: #fff; font-size: 11px; } .schedule-overview-list { display: grid; gap: 7px; margin-top: 13px; } .schedule-overview-lesson { gap: 10px; padding-top: 7px; border-top: 1px solid var(--panel-border, var(--border)); } .schedule-overview-lesson time { min-width: 46px; color: var(--accent); font-weight: 800; } .schedule-overview-lesson div { min-width: 0; } .schedule-overview-lesson strong, .schedule-overview-lesson small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .schedule-overview-lesson small, .schedule-overview-next p, .schedule-overview-empty { color: var(--muted); font-size: 12px; } .schedule-overview-next { align-items: flex-start; gap: 14px; margin-top: 15px; } .schedule-overview-next-time { min-width: 72px; padding: 10px; border-radius: 10px; background: var(--accent); color: #fff; text-align: center; } .schedule-overview-next-time strong, .schedule-overview-next-time span { display: block; } .schedule-overview-next-time strong { font-size: 18px; } .schedule-overview-next-time span { margin-top: 2px; font-size: 10px; opacity: 0.82; } .schedule-overview-next h4 { font-size: 18px; } .schedule-overview-next p { margin: 5px 0 10px; line-height: 1.4; } .schedule-overview-empty { margin-top: 15px; line-height: 1.5; } .schedule-overview-state { justify-content: center; gap: 10px; min-height: 132px; color: var(--muted); text-align: center; } .schedule-overview-state.is-error { color: var(--warning, #b45309); } .schedule-overview-spinner, .state-spinner { width: 18px; height: 18px; border: 2px solid color-mix(in srgb, var(--accent) 20%, transparent); border-top-color: var(--accent); border-radius: 50%; animation: schedule-overview-spin 0.8s linear infinite; } @keyframes schedule-overview-spin { to { transform: rotate(360deg); } } .async-combobox { position: relative; min-width: 0; width: 100%; } .async-combobox-control { position: relative; } .async-combobox-control input { width: 100%; min-height: 40px; padding: 0 42px 0 12px; border: 1px solid var(--panel-border, var(--border)); border-radius: 8px; background: var(--panel, var(--card)); color: var(--text); font: inherit; } .async-combobox-control input:focus { border-color: var(--accent); outline: 3px solid color-mix(in srgb, var(--accent) 16%, transparent); } .async-combobox-clear { position: absolute; top: 50%; right: 8px; width: 30px; height: 30px; padding: 0; transform: translateY(-50%); border: 0; border-radius: 7px; background: transparent; color: var(--muted); cursor: pointer; } .async-combobox-menu { position: absolute; z-index: 40; top: calc(100% + 6px); left: 0; right: 0; max-height: 320px; padding: 6px; overflow-y: auto; border: 1px solid var(--panel-border, var(--border)); border-radius: 10px; background: var(--panel, var(--card)); box-shadow: var(--shadow); } .async-combobox-option { display: flex; flex-direction: column; gap: 3px; width: 100%; padding: 9px 10px; border: 0; border-radius: 7px; background: transparent; color: var(--text); font: inherit; text-align: left; cursor: pointer; } .async-combobox-option:hover, .async-combobox-option:focus, .async-combobox-option[aria-selected="true"] { background: color-mix(in srgb, var(--accent) 10%, transparent); outline: none; } .async-combobox-option small, .async-combobox-state { color: var(--muted); font-size: 12px; } .async-combobox-state { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 8px; text-align: center; } .async-combobox-state.is-error { color: var(--warning, #b45309); } @media (max-width: 720px) { .schedule-overview { padding: 14px; } .schedule-overview-head { align-items: flex-start; flex-direction: column; } .schedule-overview-grid { grid-template-columns: 1fr; } }