html, body, #app { height: 100%; margin: 0; }
body { font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Arial, "Apple Color Emoji", "Segoe UI Emoji"; }
header { padding: 10px 12px; border-bottom: 1px solid #ddd; display: flex; align-items: center; gap: 16px; }
header h1 { font-size: 18px; margin: 0 8px 0 0; }
.controls { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
label { font-size: 14px; display: flex; align-items: center; gap: 6px; }
.search-box { position: relative; display: inline-block; }
.suggestions { position: absolute; top: 100%; left: 0; right: 0; background: #fff; border: 1px solid #e5e7eb; border-radius: 6px; box-shadow: 0 4px 12px rgba(0,0,0,0.08); max-height: 280px; overflow-y: auto; z-index: 1300; }
.suggestions.hidden { display: none; }
.suggestions-item { padding: 6px 8px; font-size: 13px; cursor: pointer; }
.suggestions-item:hover, .suggestions-item.active { background: #f1f5f9; }
#app { display: grid; grid-template-rows: auto 1fr 24px; }
main { height: auto; }
#cy { height: 100%; }
footer { height: 24px; line-height: 24px; display: flex; align-items: center; padding: 0 12px; border-top: 1px solid #eee; font-size: 12px; color: #666; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Right collapsible sidebar */
.sidebar { position: fixed; top: 0; right: 0; height: 100%; width: 0; overflow: hidden; background: #ffffff; border-left: 1px solid #e5e7eb; box-shadow: -2px 0 8px rgba(0,0,0,0.05); transition: width 0.2s ease-in-out; z-index: 1100; }
.sidebar.open { width: 320px; }
.sidebar-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; border-bottom: 1px solid #eee; font-weight: 600; }
.sidebar-content { padding: 10px 12px; font-size: 12px; line-height: 1.4; color: #111827; }
.sidebar button { font-size: 12px; padding: 4px 8px; background: #111827; color: #fff; border: none; border-radius: 4px; cursor: pointer; }
.sidebar button.hidden { display: none; }
.sidebar-handle { position: fixed; right: 10px; top: 10px; z-index: 1200; background: #111827; color: #fff; border: none; border-radius: 4px; padding: 6px 8px; cursor: pointer; opacity: 0.9; }
/* Link-like styling inside sidebar */
.course-link { color: #2563eb; text-decoration: none; cursor: pointer; }
.course-link:hover { text-decoration: underline; }