.library-page .dashboard{display:flex;flex-direction:column;gap:var(--cf-space-400)}.library-page .dashboard h2{margin:0;color:var(--cf-color-text-strong);font-size:var(--cf-font-size-400);font-weight:var(--cf-font-weight-semibold);letter-spacing:var(--cf-letter-spacing-snug)}.dashboard .dash-card{min-width:0;padding:var(--cf-space-450);border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-300);background:var(--cf-color-surface)}.dashboard .dash-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--cf-space-300);margin-bottom:var(--cf-space-350)}.dashboard .dash-card-head p{margin:var(--cf-space-100) 0 0;color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-275)}.dashboard .dash-link{display:inline-flex;align-items:center;gap:var(--cf-space-100);flex-shrink:0;color:var(--cf-color-primary);font-size:var(--cf-font-size-275);font-weight:var(--cf-font-weight-medium)}.dashboard .dash-link svg{width:13px;height:13px}.dashboard .dash-link:hover{color:var(--cf-color-primary-hover)}.dashboard .dash-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%);white-space:nowrap;border:0}.dashboard .dash-top{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(300px,1fr);grid-gap:var(--cf-space-400);gap:var(--cf-space-400)}@media(max-width:1200px){.dashboard .dash-top{grid-template-columns:minmax(0,1fr)}}.dashboard .dash-continue{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);grid-gap:var(--cf-space-500);gap:var(--cf-space-500);border-color:var(--cf-color-primary-border);background:linear-gradient(135deg,var(--cf-color-primary-faint),var(--cf-color-surface) 65%)}@media(max-width:768px){.dashboard .dash-continue{grid-template-columns:minmax(0,1fr)}}.dashboard .dash-continue-text{display:flex;flex-direction:column}.dashboard .dash-continue-text h2{margin-top:var(--cf-space-100);font-size:var(--cf-font-size-550);font-weight:var(--cf-font-weight-bold);letter-spacing:var(--cf-letter-spacing-tight)}.dashboard .dash-continue-text p{margin:var(--cf-space-250) 0 0;color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-325);line-height:var(--cf-line-height-160)}.dashboard .dash-kicker{display:inline-flex;align-items:center;gap:var(--cf-space-150);margin-bottom:var(--cf-space-400);color:var(--cf-color-primary);font-size:var(--cf-font-size-250);font-weight:var(--cf-font-weight-semibold);letter-spacing:var(--cf-letter-spacing-wide);text-transform:uppercase}.dashboard .dash-kicker svg{width:14px;height:14px}.dashboard .dash-lesson-index{color:var(--cf-color-primary);font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-medium)}.dashboard .dash-soon{margin-left:var(--cf-space-150);padding:var(--cf-space-050) var(--cf-space-200);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-full);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-250);font-weight:var(--cf-font-weight-semibold);letter-spacing:var(--cf-letter-spacing-wide);text-transform:uppercase;white-space:nowrap}.dashboard .dash-continue.is-soon{border-style:dashed}.dashboard .dash-actions{display:flex;flex-wrap:wrap;gap:var(--cf-space-300);margin-top:auto;padding-top:var(--cf-space-500)}.dashboard .dash-button{display:inline-flex;align-items:center;gap:var(--cf-space-200);min-height:40px;padding:0 var(--cf-space-450);border:1px solid var(--cf-color-border-strong);border-radius:var(--cf-radius-200);background:var(--cf-color-surface-raised);color:var(--cf-color-text);font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-semibold);transition:background-color var(--cf-duration-fast),border-color var(--cf-duration-fast)}.dashboard .dash-button svg{width:15px;height:15px}.dashboard .dash-button:hover{border-color:var(--cf-color-border-hover);background:var(--cf-color-surface-hover)}.dashboard .dash-button.is-primary{border-color:var(--cf-color-primary-solid);color:var(--cf-color-primary)}.dashboard .dash-button.is-primary:hover{border-color:var(--cf-color-primary-solid-hover);background:var(--cf-color-primary-solid-hover)}.dashboard .dash-preview{display:flex;flex-direction:column;min-width:0;border:1px solid var(--cf-color-border);border-radius:var(--cf-radius-250);background:var(--cf-color-code-bg);overflow:hidden}.dashboard .dash-preview-bar{display:flex;justify-content:space-between;gap:var(--cf-space-300);padding:var(--cf-space-250) var(--cf-space-350);border-bottom:1px solid var(--cf-color-border);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-250)}.dashboard .dash-preview-bar span:first-child{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.dashboard .dash-preview-bar span:last-child{flex-shrink:0}.dashboard .dash-preview-code{padding:var(--cf-space-350);color:var(--cf-color-code-text);font:var(--cf-font-size-300)/var(--cf-line-height-180) var(--cf-font-mono)}.dashboard .dash-preview-code p{margin:0}.dashboard .dash-preview-code ul{margin:0;padding:0;list-style:none}.dashboard .dash-preview-code li{color:var(--cf-color-code-comment)}.dashboard .dash-preview-code li:before{content:"//   ";white-space:pre}.dashboard .code-kw{color:var(--cf-color-code-keyword)}.dashboard .code-str{color:var(--cf-color-code-string)}.dashboard .code-comment{margin-top:var(--cf-space-200);color:var(--cf-color-code-comment)}.dashboard .dash-progress{display:flex;flex-direction:column;gap:var(--cf-space-400)}.dashboard .dash-progress .dash-card-head{margin-bottom:0}.dashboard .dash-progress-main{display:flex;align-items:center;gap:var(--cf-space-500)}.dashboard .dash-ring{position:relative;width:116px;height:116px;flex-shrink:0}.dashboard .dash-ring svg{width:100%;height:100%}.dashboard .dash-ring circle{fill:none;stroke-width:10}.dashboard .dash-ring-track{stroke:var(--cf-color-border)}.dashboard .dash-ring-value{stroke:var(--cf-color-success);stroke-linecap:round;transition:stroke-dasharray var(--cf-duration-slower) var(--cf-ease-out)}.dashboard .dash-ring-label{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.dashboard .dash-ring-label strong{color:var(--cf-color-text-strong);font-size:var(--cf-font-size-550);font-weight:var(--cf-font-weight-bold);line-height:var(--cf-line-height-100)}.dashboard .dash-ring-label span{margin-top:var(--cf-space-100);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-250)}.dashboard .dash-progress-count{flex:1 1;min-width:0}.dashboard .dash-progress-count strong{color:var(--cf-color-text-strong);font-size:var(--cf-font-size-550);font-weight:var(--cf-font-weight-bold)}.dashboard .dash-progress-count strong span{color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-regular)}.dashboard .dash-progress-note{margin:var(--cf-space-150) 0 0;color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-300);line-height:var(--cf-line-height-160)}.dashboard .dash-meter{display:block;width:100%;height:8px;margin-top:var(--cf-space-250);border:0;border-radius:var(--cf-radius-full);background:var(--cf-color-border);-webkit-appearance:none;-moz-appearance:none;appearance:none}.dashboard .dash-meter::-webkit-progress-bar{border-radius:var(--cf-radius-full);background:var(--cf-color-border)}.dashboard .dash-meter::-webkit-progress-value{border-radius:var(--cf-radius-full);background:var(--cf-color-success)}.dashboard .dash-meter::-moz-progress-bar{border-radius:var(--cf-radius-full);background:var(--cf-color-success)}.dashboard .dash-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--cf-space-300);gap:var(--cf-space-300);margin:0;padding-top:var(--cf-space-400);border-top:1px solid var(--cf-color-border)}.dashboard .dash-stats>div{display:grid;grid-template-columns:auto minmax(0,1fr);grid-column-gap:var(--cf-space-200);column-gap:var(--cf-space-200);align-items:center}.dashboard .dash-stats svg{grid-row:span 2;width:20px;height:20px}.dashboard .dash-stats>div:first-child svg{color:var(--cf-color-primary)}.dashboard .dash-stats>div:nth-child(2) svg{color:var(--cf-color-tertiary)}.dashboard .dash-stats>div:nth-child(3) svg{color:var(--cf-color-success)}.dashboard .dash-stats dd{grid-row:1;grid-column:2;margin:0;color:var(--cf-color-text-strong);font-size:var(--cf-font-size-450);font-weight:var(--cf-font-weight-bold);line-height:var(--cf-line-height-130)}.dashboard .dash-stats dt{grid-column:2;color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-250)}.dashboard .dash-guest{display:flex;flex-direction:column;align-items:flex-start;gap:var(--cf-space-250)}.dashboard .dash-guest p{margin:0;color:var(--cf-color-text-secondary);font-size:var(--cf-font-size-275);line-height:var(--cf-line-height-150)}.dashboard .dash-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--cf-space-400);gap:var(--cf-space-400)}@media(max-width:1200px){.dashboard .dash-row{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:768px){.dashboard .dash-row{grid-template-columns:minmax(0,1fr)}}.dashboard .dash-list{display:flex;flex-direction:column;gap:var(--cf-space-150);margin:0;padding:0;list-style:none}.dashboard .dash-action,.dashboard .dash-activity,.dashboard .dash-next{display:flex;align-items:center;gap:var(--cf-space-300);width:100%;padding:var(--cf-space-250);border:1px solid rgba(0,0,0,0);border-radius:var(--cf-radius-200);background:none;color:var(--cf-color-text-tertiary);font:inherit;text-align:left;transition:background-color var(--cf-duration-fast)}.dashboard .dash-action>svg,.dashboard .dash-activity>svg,.dashboard .dash-next>svg{width:16px;height:16px;flex-shrink:0}.dashboard .dash-action:hover,.dashboard .dash-activity:hover,.dashboard .dash-next:hover{background:var(--cf-color-surface-hover)}.dashboard .dash-item-text{flex:1 1;min-width:0;display:flex;flex-direction:column}.dashboard .dash-item-text strong{overflow:hidden;color:var(--cf-color-text-strong);font-size:var(--cf-font-size-300);font-weight:var(--cf-font-weight-semibold);white-space:nowrap;text-overflow:ellipsis}.dashboard .dash-item-text span{overflow:hidden;font-size:var(--cf-font-size-275);white-space:nowrap;text-overflow:ellipsis}.dashboard .dash-activity time{flex-shrink:0;color:var(--cf-color-text-muted);font-size:var(--cf-font-size-250)}.dashboard .dash-activity-icon{display:grid;place-items:center;width:24px;height:24px;flex-shrink:0;border-radius:var(--cf-radius-round);background:var(--cf-color-success);color:var(--cf-color-on-success)}.dashboard .dash-activity-icon svg{width:14px;height:14px;stroke-width:2.4}.dashboard .dash-activity-icon.is-opened{background:var(--cf-color-surface-strong);color:var(--cf-color-text-secondary)}.dashboard .dash-next-icon{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;border-radius:var(--cf-radius-200);background:var(--cf-color-surface-strong);color:var(--cf-color-text-secondary)}.dashboard .dash-next-icon svg{width:17px;height:17px}.dashboard .dash-next>svg:last-child{width:22px;height:22px;color:var(--cf-color-text-secondary)}.dashboard .dash-next.is-first{border-color:var(--cf-color-primary-border);border-left:3px solid var(--cf-color-primary-solid);background:var(--cf-color-primary-faint)}.dashboard .dash-next.is-first .dash-next-icon{background:var(--cf-color-primary-subtle);color:var(--cf-color-primary)}.dashboard .dash-next.is-first>svg:last-child{color:var(--cf-color-primary)}.dashboard .dash-tile{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;border-radius:var(--cf-radius-200)}.dashboard .dash-tile svg{width:17px;height:17px}.dashboard .dash-tile.is-teal{background:var(--cf-color-tertiary-subtle);color:var(--cf-color-tertiary)}.dashboard .dash-tile.is-lilac{background:var(--cf-color-secondary-subtle);color:var(--cf-color-secondary)}.dashboard .dash-tile.is-green{background:var(--cf-color-success-subtle);color:var(--cf-color-success)}.dashboard .dash-tile.is-amber{background:var(--cf-color-warning-subtle);color:var(--cf-color-warning)}.dashboard .dash-tile.is-clay{background:var(--cf-color-primary-subtle);color:var(--cf-color-primary)}.dashboard .dash-empty{margin:0;padding:var(--cf-space-400) var(--cf-space-250);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-300)}.dashboard .dash-recs{margin-top:var(--cf-space-200)}.dashboard .dash-recs h2 span{margin-left:var(--cf-space-200);color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-275);font-weight:var(--cf-font-weight-regular);letter-spacing:normal}.dashboard .dash-recs ul{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:var(--cf-space-400);gap:var(--cf-space-400);margin:0;padding:0;list-style:none}@media(max-width:1200px){.dashboard .dash-recs ul{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:560px){.dashboard .dash-recs ul{grid-template-columns:minmax(0,1fr)}}.dashboard .dash-rec{height:100%;display:grid;grid-template-columns:auto minmax(0,1fr);grid-column-gap:var(--cf-space-300);column-gap:var(--cf-space-300);grid-row-gap:var(--cf-space-300);row-gap:var(--cf-space-300);padding:var(--cf-space-400);transition:border-color var(--cf-duration-fast)}.dashboard .dash-rec:hover{border-color:var(--cf-color-border-hover)}.dashboard .dash-rec-text{display:flex;flex-direction:column;gap:var(--cf-space-100)}.dashboard .dash-rec-text strong{color:var(--cf-color-text-strong);font-size:var(--cf-font-size-325);font-weight:var(--cf-font-weight-semibold);line-height:var(--cf-line-height-140)}.dashboard .dash-rec-text span{color:var(--cf-color-text-tertiary);font-size:var(--cf-font-size-275);line-height:var(--cf-line-height-150)}.dashboard .dash-rec-meta{grid-column:2;align-self:end;display:flex;align-items:center;justify-content:space-between;gap:var(--cf-space-200);color:var(--cf-color-text-muted);font-size:var(--cf-font-size-250)}.dashboard .dash-chip{padding:0 var(--cf-space-200);border:1px solid var(--cf-color-border-control);border-radius:var(--cf-radius-full);color:var(--cf-color-text-secondary)}.library-page .library-main.is-wide{max-width:1360px;padding-top:var(--cf-space-700)}