.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;display:flex}.page-header h1{font-size:var(--fs-3xl);letter-spacing:0;font-weight:650}.page-header p{font-size:var(--fs-sm);margin-top:4px}@media (width<=640px){.page-header h1{font-size:var(--fs-2xl)}}.page-actions{gap:8px;display:flex}.alert{border-radius:var(--radius);font-size:var(--fs-sm);align-items:flex-start;gap:8px;padding:10px 14px;font-weight:500;line-height:1.5;display:flex}.alert>.icon{margin-top:2px}.alert-error{background:var(--danger-soft);color:var(--danger-text)}.alert-success{background:var(--success-soft);color:var(--success-text)}.alert-warning{background:var(--warning-soft);color:var(--warning-text)}.alert-info{background:color-mix(in srgb, var(--info) 12%, transparent);color:var(--info-text)}.chip{height:24px;font-size:var(--fs-xs);background:var(--surface-3);color:var(--text-2);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:0 10px;font-weight:600;display:inline-flex}.chip-accent{background:var(--primary-soft);color:var(--primary-text)}.chip-success{background:var(--success-soft);color:var(--success-text)}.chip-live{background:var(--danger-soft);color:var(--danger-text)}.chip-live:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px;animation:1.6s ease-in-out infinite pulse}.avatar{color:hsl(var(--h) 45% 34%);background:hsl(var(--h) 75% 92%);box-shadow:inset 0 0 0 1px hsl(var(--h) 40% 40% / .12);letter-spacing:-.02em;border-radius:50%;flex:none;place-items:center;font-weight:600;display:inline-grid}[data-theme=dark] .avatar{color:hsl(var(--h) 80% 80%);background:hsl(var(--h) 35% 22%);box-shadow:inset 0 0 0 1px hsl(var(--h) 60% 70% / .14)}.empty{text-align:center;border:1px solid var(--card-border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-card);flex-direction:column;align-items:center;padding:48px 24px;display:flex}.empty-page{box-shadow:none;background:0 0;border:0;padding-top:12vh}.empty-icon{background:var(--c-soft);width:52px;height:52px;color:var(--c-ink);border-radius:16px;place-items:center;margin-bottom:14px;display:grid}.empty-page .empty-icon{border-radius:20px;width:64px;height:64px}.empty h3{font-size:var(--fs-md)}.empty-page h3{font-size:var(--fs-xl)}.empty p{max-width:420px;margin-top:6px}.empty-action{margin-top:20px}.course-row{border-radius:var(--radius);background:var(--surface-2);min-width:0;box-shadow:inset 0 0 0 1px var(--card-border);color:var(--text);align-items:center;gap:12px;padding:10px 12px;transition:background .15s;display:flex}.course-row .course-mono{min-width:36px;height:36px;font-size:var(--fs-xs);border-radius:10px;flex:none}.course-row-text{flex-direction:column;flex:1;min-width:0;line-height:1.35;display:flex}.course-row .progress{flex:none;width:120px}.course-row .chip,.course-row>.icon{flex:none}@media (width<=640px){.course-row .progress{width:80px}}.progress{align-items:center;gap:10px;width:100%;display:flex}.progress-track{background:var(--surface-3);border-radius:99px;flex:1;height:8px;overflow:hidden}.progress-bar{border-radius:inherit;background:var(--success);height:100%;transition:width .5s var(--ease)}.progress-label{font-size:var(--fs-xs);color:var(--text-2);text-align:right;font-variant-numeric:tabular-nums;min-width:36px;font-weight:600}.ring-wrap{align-items:center;gap:10px;display:flex}.ring{--p:0;background:conic-gradient(var(--success) calc(var(--p) * 1%), var(--surface-3) 0);border-radius:50%;flex:none;width:40px;height:40px;transition:background .4s;-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - 7px),#000 calc(100% - 6px));mask:radial-gradient(farthest-side,#0000 calc(100% - 7px),#000 calc(100% - 6px))}.ring-value{font-size:var(--fs-2xl);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:650;line-height:1}.course-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.course-card{border-radius:var(--radius-lg);background:var(--surface);border:1px solid var(--card-border);box-shadow:var(--shadow-card);color:var(--text);transition:border-color .15s, box-shadow .2s, transform .2s var(--ease);flex-direction:column;display:flex;overflow:hidden}.course-cover{aspect-ratio:5/2;background:linear-gradient(150deg, var(--c2), var(--c1));justify-content:flex-end;align-items:flex-start;padding:12px;display:flex;position:relative}.course-mono{background:var(--c-deep,var(--c1));min-width:40px;height:40px;color:var(--c-on,var(--on-strong));font-weight:700;font-size:var(--fs-sm);text-transform:uppercase;border-radius:12px;place-items:center;padding:0 6px;display:grid}.course-icon.has-image{background:var(--surface-2);padding:0;display:block;overflow:hidden}.course-icon.has-image img{object-fit:cover;width:0;min-width:100%;height:100%;display:block}.course-cover-badges{background:var(--surface);border-radius:999px;flex-wrap:wrap;justify-content:flex-end;gap:4px;padding:2px;display:flex;position:relative}.course-cover-badges:empty{display:none}.course-cover-img{object-fit:cover;background:var(--surface-2);width:100%;height:100%;position:absolute;inset:0}.course-cover .course-mono{box-shadow:0 0 0 3px var(--surface);position:absolute;bottom:-20px;left:20px}.course-body{flex-direction:column;flex:1;gap:2px;padding:30px 20px 20px;display:flex}.course-code{font-size:var(--fs-xs);color:var(--muted);letter-spacing:.02em;margin-top:2px;font-weight:500}.course-title{font-size:var(--fs-md);font-weight:650}.course-summary{font-size:var(--fs-sm);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:6px;display:-webkit-box;overflow:hidden}.course-foot{border-top:1px solid var(--border);margin:auto 20px 0;padding:14px 0 16px}@media (width<=640px){.course-cover{aspect-ratio:16/5}.course-cover .course-mono{left:16px}.course-body{padding:26px 16px 16px}.course-foot{margin-inline:16px;padding-block:12px 14px}}.meta{font-size:var(--fs-xs);color:var(--muted);font-variant-numeric:tabular-nums;align-items:center;gap:6px;min-width:0;display:flex}.meta-sep{opacity:.5}a.person{color:var(--text)}.person{align-items:center;gap:12px;min-width:0;display:flex}.person-meta{flex-direction:column;min-width:0;line-height:1.35;display:flex}.person-sub{gap:0 6px;min-width:0;display:flex}.person-sub>span+span:before{content:"·";margin-right:6px}.person-sub>span:not(:last-child){flex:none}.person-sub>span:last-child{flex:0 auto}.crumbs{font-size:var(--fs-sm);color:var(--muted);align-items:center;gap:4px;min-width:0;display:flex}.crumbs a{color:inherit}.crumbs a,.crumbs span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.crumbs>.icon{opacity:.6;flex:none}.crumbs>span:last-child{color:var(--text-2)}@media (width<=640px),(pointer:coarse){.crumbs a{margin-block:-12px;padding-block:12px}}.tabs{background:var(--track);width:fit-content;max-width:100%;box-shadow:inset 0 0 0 1px var(--track-border);scrollbar-width:none;isolation:isolate;border-radius:999px;gap:4px;margin:20px 0 24px;padding:4px;display:flex;overflow-x:auto}.tabs-block{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;width:100%;display:grid}.tab{height:36px;color:var(--muted);font-weight:600;font-size:var(--fs-base);white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:0 18px;transition:color .15s;display:inline-flex;position:relative}.tab.active{color:var(--c-ink)}.tab.active:before{content:"";z-index:-1;border-radius:inherit;background:var(--c-soft);position:absolute;inset:0}.tab.is-entering{animation:tab-text-in .25s var(--ease)}.tab.is-entering:before{animation:tab-slide .25s var(--ease)}.tab.is-leaving{animation:tab-text-out .25s var(--ease)}@keyframes tab-slide{0%{left:var(--tab-from-left);right:var(--tab-from-right)}}@keyframes tab-text-in{0%{color:var(--muted)}}@keyframes tab-text-out{0%{color:var(--c-ink)}}@media (width<=640px){.tabs{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;width:100%;display:grid}}@media (width<=640px),(pointer:coarse){.tab{height:var(--tap)}}:root[data-tab-slide] .tab-panel{view-transition-name:tab-panel}:root[data-tab-slide] .tabs{view-transition-name:tabs}::view-transition-old(tabs){display:none}::view-transition-new(tabs){animation:none}:root[data-tab-slide=next]{--tab-slide:16px}:root[data-tab-slide=prev]{--tab-slide:-16px}::view-transition-group(tab-panel){animation-duration:.25s;animation-timing-function:var(--ease)}::view-transition-old(tab-panel){animation:.12s ease-out both tab-panel-out}::view-transition-new(tab-panel){animation:tab-panel-in .25s var(--ease) 80ms both}@keyframes tab-panel-out{to{opacity:0;translate:calc(var(--tab-slide) * -1) 0}}@keyframes tab-panel-in{0%{opacity:0;translate:var(--tab-slide) 0}}@media (hover:hover){.course-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow);text-decoration:none;transform:translateY(-1px)}.course-row:hover{background:var(--surface-3);text-decoration:none}a.person:hover{text-decoration:none}a.person:hover .strong{color:var(--primary-text)}.crumbs a:hover{color:var(--text)}.tab:not(.active):hover{color:var(--text);text-decoration:none}}
