@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&display=swap";@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Source+Serif+4:wght@400;600;700&display=swap";.dash{max-width:1280px;margin:0 auto;padding:1.5rem 2rem 3rem;display:flex;flex-direction:column;gap:1.5rem}.dash-header{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap}.dash-header h1{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:1.15rem;font-weight:700;letter-spacing:-.01em;color:var(--vf-text);margin:0}.dash-header p{font-size:.82rem;color:var(--vf-text-dim);margin:.15rem 0 0}.dash-filter{display:flex;align-items:center;gap:.5rem}.dash-filter-label{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--vf-text-dim)}.dash-filter select{background:var(--vf-surface);color:var(--vf-text);border:1px solid var(--vf-border);border-radius:var(--vf-radius-sm);padding:.4rem 2rem .4rem .6rem;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.78rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2365635e' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center}.dash-filter select:focus{outline:none;border-color:var(--vf-accent)}.dash-user-banner{display:grid;grid-template-columns:1fr auto;gap:1.5rem;background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1.1rem 1.5rem;align-items:center}.dash-user-greeting{font-size:.88rem;color:var(--vf-text-muted)}.dash-user-greeting strong{color:var(--vf-text);font-weight:600}.dash-user-counts{display:flex;gap:1.75rem}.dash-user-stat{text-align:center}.dash-user-stat-value{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:1.4rem;font-weight:700;color:var(--vf-text);line-height:1.2}.dash-user-stat-value.accent{color:var(--vf-accent)}.dash-user-stat-value.success{color:var(--vf-success)}.dash-user-stat-value.warning{color:var(--vf-warning)}.dash-user-stat-label{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--vf-text-dim);margin-top:.15rem}.dash-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}.dash-stat-card{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.25rem}.dash-stat-card-label{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--vf-text-dim)}.dash-stat-card-row{display:flex;align-items:baseline;gap:.5rem}.dash-stat-card-value{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:1.6rem;font-weight:700;color:var(--vf-text);line-height:1.2}.dash-stat-card-sub{font-size:.78rem;color:var(--vf-text-dim)}.dash-progress{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1rem 1.25rem}.dash-progress-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.6rem}.dash-progress-title{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--vf-text-dim)}.dash-progress-pct{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.88rem;font-weight:700;color:var(--vf-success)}.dash-progress-track{width:100%;height:8px;background:var(--vf-surface-raised);border-radius:4px;overflow:hidden}.dash-progress-fill{height:100%;border-radius:4px;background:var(--vf-success);transition:width .6s cubic-bezier(.16,1,.3,1)}.dash-progress-labels{display:flex;justify-content:space-between;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.7rem;color:var(--vf-text-dim);margin-top:.4rem}.dash-columns{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem}.dash-chart-card{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1.25rem}.dash-chart-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.dash-chart-title{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--vf-text-dim)}.dash-chart-period{display:flex;gap:.25rem}.dash-chart-period button{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.62rem;font-weight:600;padding:.25rem .55rem;border-radius:var(--vf-radius-sm);border:1px solid var(--vf-border);background:transparent;color:var(--vf-text-dim);cursor:pointer;transition:all .15s ease}.dash-chart-period button:hover{border-color:var(--vf-text-muted);color:var(--vf-text-muted)}.dash-chart-period button.active{background:var(--vf-accent);border-color:var(--vf-accent);color:#fff}.dash-chart{display:flex;align-items:flex-end;gap:2px;height:140px;padding-top:.5rem}.dash-chart-bar-group{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end;position:relative}.dash-chart-bar{width:100%;min-width:4px;max-width:24px;border-radius:2px 2px 0 0;background:var(--vf-accent);transition:height .4s cubic-bezier(.16,1,.3,1);position:relative;cursor:default}.dash-chart-bar:hover{opacity:.85}.dash-chart-bar.today{background:var(--vf-success)}.dash-chart-bar-tooltip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--vf-text);color:var(--vf-surface);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.62rem;padding:.3rem .5rem;border-radius:3px;white-space:nowrap;z-index:10;pointer-events:none}.dash-chart-bar-group:hover .dash-chart-bar-tooltip{display:block}.dash-chart-label{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.5rem;color:var(--vf-text-dim);margin-top:.3rem;text-align:center;letter-spacing:-.02em}.dash-chart-empty{display:flex;align-items:center;justify-content:center;height:140px;color:var(--vf-text-dim);font-size:.82rem}.dash-leaderboard{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1.25rem}.dash-leaderboard-title{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--vf-text-dim);margin-bottom:.85rem}.dash-leaderboard-list{display:flex;flex-direction:column;gap:.4rem}.dash-leaderboard-row{display:grid;grid-template-columns:1.5rem 1fr auto;gap:.6rem;align-items:center;padding:.45rem .5rem;border-radius:var(--vf-radius-sm);transition:background .1s ease}.dash-leaderboard-row:hover{background:var(--vf-surface-raised)}.dash-leaderboard-row.you{background:var(--vf-accent-subtle);border:1px solid var(--vf-accent)}.dash-leaderboard-rank{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.72rem;font-weight:700;color:var(--vf-text-dim);text-align:center}.dash-leaderboard-row:nth-child(1) .dash-leaderboard-rank{color:#d4a017}.dash-leaderboard-row:nth-child(2) .dash-leaderboard-rank{color:#8a8a8a}.dash-leaderboard-row:nth-child(3) .dash-leaderboard-rank{color:#b87333}.dash-leaderboard-email{font-size:.78rem;color:var(--vf-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-leaderboard-count{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.82rem;font-weight:700;color:var(--vf-accent)}.dash-leaderboard-empty{text-align:center;padding:2rem;color:var(--vf-text-dim);font-size:.82rem}.dash-sources{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1.1rem 1.25rem}.dash-sources-title{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--vf-text-dim);margin-bottom:.75rem}.dash-sources-grid{display:flex;gap:.6rem;flex-wrap:wrap}.dash-source-chip{display:flex;align-items:baseline;gap:.4rem;padding:.4rem .75rem;background:var(--vf-surface-raised);border-radius:var(--vf-radius-sm);border:1px solid var(--vf-border)}.dash-source-chip-count{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.88rem;font-weight:700;color:var(--vf-text)}.dash-source-chip-name{font-size:.75rem;color:var(--vf-text-muted);text-transform:capitalize}.dash-chapter-card{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1.25rem}.dash-chapter-title{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--vf-text-dim);margin-bottom:.85rem}.dash-chapter-table{width:100%;border-collapse:collapse}.dash-chapter-table th{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--vf-text-dim);text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--vf-border);white-space:nowrap}.dash-chapter-table td{padding:.5rem .75rem;font-size:.82rem;color:var(--vf-text);border-bottom:1px solid var(--vf-surface-raised);white-space:nowrap}.dash-chapter-table tbody tr:hover{background:var(--vf-surface-raised)}.dash-chapter-table .mono{font-family:"IBM Plex Mono",var(--vf-font-mono);font-weight:600}.dash-chapter-progress{display:flex;align-items:center;gap:.5rem}.dash-chapter-progress-track{width:5rem;height:5px;background:var(--vf-surface-raised);border-radius:3px;overflow:hidden}.dash-chapter-progress-fill{height:100%;border-radius:3px;transition:width .4s ease}.dash-chapter-progress-pct{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.72rem;font-weight:600;min-width:2.5rem;text-align:right}.dash-cbp-rulings{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1.25rem}.dash-cbp-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.85rem}.dash-cbp-title{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--vf-text-dim)}.dash-cbp-link{display:inline-flex;align-items:center;gap:.3rem;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.7rem;color:var(--vf-accent);text-decoration:none}.dash-cbp-link:hover{text-decoration:underline}.dash-cbp-loading,.dash-cbp-empty{text-align:center;padding:1.5rem;color:var(--vf-text-dim);font-size:.82rem}.dash-cbp-table-wrap{overflow-x:auto}.dash-cbp-table{width:100%;border-collapse:collapse;table-layout:fixed}.dash-cbp-table col.col-ruling{width:8rem}.dash-cbp-table col.col-date{width:7rem}.dash-cbp-table col.col-codes{width:14rem}.dash-cbp-table th{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--vf-text-dim);text-align:left;padding:.5rem .75rem;border-bottom:1px solid var(--vf-border);white-space:nowrap}.dash-cbp-table td{padding:.5rem .75rem;font-size:.82rem;color:var(--vf-text);border-bottom:1px solid var(--vf-surface-raised);vertical-align:top;overflow:hidden;text-overflow:ellipsis}.dash-cbp-table td a{color:var(--vf-accent);text-decoration:none;font-weight:600}.dash-cbp-table td a:hover{text-decoration:underline}.dash-cbp-table .mono{font-family:"IBM Plex Mono",var(--vf-font-mono);white-space:nowrap}.dash-cbp-table .codes-cell{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.75rem;white-space:normal;word-break:break-word}.dash-cbp-table tbody tr:hover{background:var(--vf-surface-raised)}.dash-cbp-table tr.dash-cbp-recent td{color:var(--vf-danger);font-weight:600}.dash-cbp-table tr.dash-cbp-recent td a{color:var(--vf-danger)}.dash-cbp-pagination{display:flex;align-items:center;justify-content:center;gap:.25rem;margin-top:1rem}.dash-cbp-pagination button{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.72rem;font-weight:600;padding:.3rem .6rem;border:1px solid var(--vf-border);border-radius:var(--vf-radius-sm);background:var(--vf-surface);color:var(--vf-text-muted);cursor:pointer;transition:background .1s ease,color .1s ease}.dash-cbp-pagination button:hover:not(:disabled){background:var(--vf-surface-raised);color:var(--vf-text)}.dash-cbp-pagination button.active{background:var(--vf-accent);border-color:var(--vf-accent);color:#fff}.dash-cbp-pagination button:disabled{opacity:.4;cursor:default}.dash-loading{display:flex;align-items:center;justify-content:center;height:20rem}.dash-spinner{width:2rem;height:2rem;border:2px solid var(--vf-border);border-top-color:var(--vf-accent);border-radius:50%;animation:dash-spin .7s linear infinite}@keyframes dash-spin{to{transform:rotate(360deg)}}@media(max-width:900px){.dash-cards{grid-template-columns:repeat(2,1fr)}.dash-columns,.dash-user-banner{grid-template-columns:1fr}.dash-user-counts{justify-content:flex-start}}.verify-page{background:var(--vf-bg);color:var(--vf-text);font-family:var(--vf-font-body);position:fixed;right:0;bottom:0;left:0;top:64px;z-index:10;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto 1fr auto;gap:0;overflow:hidden}.vf-header{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.4rem;padding:.65rem 1.5rem;border-bottom:1px solid var(--vf-border);background:var(--vf-surface);min-height:0}.vf-header-title{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.7rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--vf-text-dim)}.vf-header-progress{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.85rem;color:var(--vf-text-dim);display:flex;align-items:center;gap:.5rem}.vf-header-progress strong{color:var(--vf-text);font-size:1rem}.vf-header-controls{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;min-width:0}.vf-header-controls select{background:var(--vf-surface);color:var(--vf-text);border:1px solid var(--vf-border);border-radius:var(--vf-radius-sm);padding:.35rem .75rem;font-size:.78rem;font-family:"IBM Plex Mono",var(--vf-font-mono);cursor:pointer}.vf-header-controls select.vf-filter-select{max-width:11rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vf-header-controls select:focus{outline:none;border-color:var(--vf-accent)}.vf-left-col{grid-column:1;grid-row:2;padding:1.25rem 1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1rem;border-right:1px solid var(--vf-border)}.vf-product{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1.5rem 1.75rem;transition:border-color var(--vf-transition),box-shadow var(--vf-transition);box-shadow:var(--vf-shadow)}.vf-product.success-flash{border-color:var(--vf-success);box-shadow:0 0 0 3px var(--vf-success-bg),0 0 30px #16a36426}.vf-product-label{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--vf-text-dim);margin-bottom:.75rem}.vf-product-meta{display:flex;gap:1.5rem;flex-wrap:wrap;align-items:baseline;font-size:.78rem;color:var(--vf-text-dim);font-family:"IBM Plex Mono",var(--vf-font-mono);padding-top:.75rem;border-top:1px solid var(--vf-border)}.vf-product-meta-item{display:flex;align-items:baseline;gap:.35rem}.vf-product-meta-value{color:var(--vf-text-muted);font-weight:600}.vf-product-meta-code{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:1.4rem;font-weight:700;color:var(--vf-code-text);letter-spacing:.04em}.vf-product-description-wrap{position:relative;margin-bottom:1rem}.vf-product-description{font-family:"Source Serif 4",Georgia,serif;font-size:1.5rem;font-weight:400;line-height:1.45;color:var(--vf-text);cursor:text;padding:.35rem .5rem;margin:-.35rem -.5rem;border-radius:var(--vf-radius-sm);border:1px solid transparent;transition:border-color .15s ease,background .15s ease}.vf-product-description:hover{border-color:var(--vf-border);background:var(--vf-code-bg)}.vf-product-description-editing{font-family:"Source Serif 4",Georgia,serif;font-size:1.5rem;font-weight:400;line-height:1.45;color:var(--vf-text);width:100%;padding:.35rem .5rem;margin:-.35rem -.5rem;border-radius:var(--vf-radius-sm);border:2px solid var(--vf-accent);background:var(--vf-surface);resize:vertical;min-height:3rem;box-sizing:content-box}.vf-product-description-editing:focus{outline:none;box-shadow:0 0 0 3px var(--vf-accent-subtle)}.vf-desc-edit-hint{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;color:var(--vf-text-dim);margin-top:.3rem;letter-spacing:.04em}.vf-desc-changed-badge{display:inline-block;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;color:var(--vf-warning);letter-spacing:.08em;text-transform:uppercase;margin-left:.5rem;vertical-align:middle}.vf-duplicate-warn{display:flex;align-items:center;gap:.4rem;margin-top:.4rem;padding:.4rem .65rem;background:var(--vf-danger-bg);border:1px solid var(--vf-danger);border-radius:var(--vf-radius-sm);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.72rem;color:var(--vf-danger);font-weight:600}.vf-helpers{display:flex;gap:.5rem;margin-bottom:.75rem;flex-wrap:wrap}.vf-helper-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .65rem;border-radius:var(--vf-radius-sm);border:1px solid var(--vf-border);background:var(--vf-code-bg);color:var(--vf-text-muted);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease;text-decoration:none;letter-spacing:.03em}.vf-helper-btn:hover{border-color:var(--vf-accent);color:var(--vf-accent);background:var(--vf-accent-subtle)}.vf-ai-card{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:1rem 1.25rem;box-shadow:var(--vf-shadow-sm);animation:vf-fade-in .2s ease}.vf-ai-card.correct{border-color:var(--vf-success);background:linear-gradient(135deg,var(--vf-success-bg),var(--vf-surface))}.vf-ai-card.wrong{border-color:var(--vf-warning);background:linear-gradient(135deg,rgba(217,119,6,.06),var(--vf-surface))}.vf-ai-panel-label{display:flex;align-items:center;gap:.3rem;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--vf-text-dim);margin-bottom:.5rem}.vf-ai-verdict{display:flex;align-items:center;gap:.5rem;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:1.1rem;font-weight:700;margin-bottom:.35rem}.vf-ai-card.correct .vf-ai-verdict{color:var(--vf-success)}.vf-ai-card.wrong .vf-ai-verdict{color:var(--vf-warning)}.vf-ai-code{font-weight:700;color:var(--vf-accent);margin-left:.35rem;padding:.15rem .5rem;background:var(--vf-accent-subtle);border-radius:4px;font-size:.95rem}.vf-ai-text{font-size:.88rem;line-height:1.5;color:var(--vf-text-muted)}.vf-btn-ai-accept{display:inline-flex;align-items:center;gap:.4rem;margin-top:.6rem;padding:.45rem .85rem;border-radius:var(--vf-radius-sm);border:1px solid var(--vf-success);background:var(--vf-success);color:#fff;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.75rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease}.vf-btn-ai-accept:hover{background:#15b86c;box-shadow:0 0 12px #16a3644d}.vf-ai-loading{display:flex;gap:.4rem;padding:.5rem 0}.vf-ai-loading-dot{width:6px;height:6px;border-radius:50%;background:var(--vf-text-dim);animation:vf-ai-pulse 1s ease-in-out infinite}.vf-ai-loading-dot:nth-child(2){animation-delay:.15s}.vf-ai-loading-dot:nth-child(3){animation-delay:.3s}@keyframes vf-ai-pulse{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}.vf-right-col{grid-column:2;grid-row:2;padding:1rem 1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:.6rem}.vf-class-card{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:.75rem 1.25rem;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,opacity .2s ease;box-shadow:var(--vf-shadow-sm);position:relative;overflow:hidden}.vf-class-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:transparent;transition:background .2s ease}.vf-class-card.active{padding:1rem 1.25rem;border-color:var(--vf-accent);box-shadow:var(--vf-shadow),0 0 0 1px var(--vf-accent-subtle)}.vf-class-card.active:before{background:var(--vf-accent)}.vf-class-card.completed{border-color:var(--vf-success);opacity:.85}.vf-class-card.completed .vf-class-card-code{font-size:1.6rem}.vf-class-card.completed:before{background:var(--vf-success)}.vf-class-card.pending{opacity:.4;cursor:default}.vf-class-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.35rem}.vf-class-card-step{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--vf-text-dim);display:flex;align-items:center;gap:.4rem}.vf-class-card-step .step-badge{width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.6rem;font-weight:700;background:var(--vf-surface-raised);color:var(--vf-text-dim);border:1px solid var(--vf-border)}.vf-class-card.active .step-badge{background:var(--vf-accent);color:#fff;border-color:var(--vf-accent)}.vf-class-card.completed .step-badge{background:var(--vf-success);color:#fff;border-color:var(--vf-success)}.vf-class-card-changed{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem;font-weight:600;color:var(--vf-warning);letter-spacing:.05em}.vf-class-card-digits{font-size:.55rem;font-weight:400;color:var(--vf-text-dim);opacity:.7;letter-spacing:.04em;margin-left:.15rem}.vf-class-card-code{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:2.4rem;font-weight:700;color:var(--vf-code-text);letter-spacing:.06em;line-height:1.15;margin-bottom:.3rem}.vf-class-card.pending .vf-class-card-code{font-size:1.6rem;color:var(--vf-text-dim)}.vf-class-card-active-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.3rem}.vf-class-card-input-row{display:flex;align-items:baseline;gap:0}.vf-class-card-prefix{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:2.4rem;font-weight:700;color:var(--vf-text-dim);letter-spacing:.06em;line-height:1.15;-webkit-user-select:none;user-select:none;flex-shrink:0}.vf-class-card-input{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:2.4rem;font-weight:700;color:var(--vf-code-text);letter-spacing:.06em;line-height:1.15;background:var(--vf-code-bg);border:2px solid var(--vf-accent);border-radius:var(--vf-radius-sm);padding:.15rem .4rem;width:4ch;min-width:3ch;max-width:8ch;box-sizing:content-box;transition:border-color .15s ease,box-shadow .15s ease}.vf-class-card-input:focus{outline:none;border-color:var(--vf-accent);box-shadow:0 0 0 3px var(--vf-accent-subtle)}.vf-class-card-input::placeholder{color:var(--vf-text-dim);opacity:.4}.vf-class-card-desc{font-size:.92rem;color:var(--vf-text-muted);line-height:1.4;max-height:4.2em;overflow-y:auto}.vf-class-card.pending .vf-class-card-desc{font-size:.82rem}.vf-class-card-actions{display:flex;gap:.4rem;animation:vf-slide-up .15s ease;flex-shrink:0}@keyframes vf-slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.vf-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;border-radius:var(--vf-radius-sm);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.72rem;font-weight:600;letter-spacing:.03em;border:none;cursor:pointer;transition:background-color .15s ease,color .15s ease,box-shadow .15s ease}.vf-btn:focus-visible{outline:2px solid var(--vf-accent);outline-offset:2px}.vf-btn-confirm{background:var(--vf-success);color:#fff}.vf-btn-confirm:hover{background:#15b86c;box-shadow:0 0 12px #16a36440}.vf-btn-change{background:var(--vf-surface-raised);color:var(--vf-text);border:1px solid var(--vf-border)}.vf-btn-change:hover{border-color:var(--vf-accent);color:var(--vf-accent)}.vf-btn-kbd{font-size:.6rem;color:inherit;opacity:.55;margin-left:.2rem}.vf-action-bar{grid-column:1 / -1;grid-row:3;display:flex;align-items:center;gap:.75rem;padding:.6rem 1.5rem;background:var(--vf-surface);border-top:1px solid var(--vf-border);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.75rem}.vf-action-bar-group{display:flex;align-items:center;gap:.5rem}.vf-toolbar-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.45rem .85rem;border-radius:var(--vf-radius-sm);border:1px solid var(--vf-border);background:transparent;color:var(--vf-text-muted);cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.75rem;font-weight:500}.vf-toolbar-btn:hover{border-color:var(--vf-text-muted);color:var(--vf-text);background:var(--vf-surface-raised)}.vf-toolbar-btn.danger{color:var(--vf-text-dim)}.vf-toolbar-btn.danger:hover{border-color:var(--vf-danger);color:var(--vf-danger);background:var(--vf-danger-bg)}.vf-toolbar-btn:disabled{opacity:.3;cursor:not-allowed}.vf-toolbar-btn .btn-shortcut{font-size:.6rem;opacity:.5;margin-left:.15rem}.vf-bar-divider{width:1px;height:22px;background:var(--vf-border);margin:0 .25rem}.vf-bar-spacer{flex:1}.vf-stats{display:flex;gap:1.25rem;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.7rem;color:var(--vf-text-dim)}.vf-stats-value{color:var(--vf-text-muted);font-weight:600}.vf-ai-toggle{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .65rem;border-radius:var(--vf-radius-sm);border:1px solid var(--vf-border);background:transparent;color:var(--vf-text-dim);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.7rem;font-weight:600;letter-spacing:.05em;cursor:pointer;transition:background-color .15s ease,color .15s ease,border-color .15s ease;-webkit-user-select:none;user-select:none}.vf-ai-toggle:hover{border-color:var(--vf-text-muted);color:var(--vf-text-muted)}.vf-ai-toggle.active{background:var(--vf-accent);border-color:var(--vf-accent);color:#fff;box-shadow:0 0 10px #3b74e033}.vf-ai-toggle.active:hover{background:var(--vf-accent-hover);border-color:var(--vf-accent-hover)}.vf-picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;animation:vf-fade-in .15s ease}@keyframes vf-fade-in{0%{opacity:0}to{opacity:1}}.vf-picker{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);width:580px;max-height:70vh;display:flex;flex-direction:column;box-shadow:0 20px 60px #00000026}.vf-picker-header{padding:1rem 1.25rem;border-bottom:1px solid var(--vf-border);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.7rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--vf-text-dim)}.vf-picker-search{padding:.75rem 1.25rem;border-bottom:1px solid var(--vf-border)}.vf-picker-search input{width:100%;background:var(--vf-code-bg);border:1px solid var(--vf-border);border-radius:var(--vf-radius-sm);padding:.6rem .75rem;color:var(--vf-text);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.88rem}.vf-picker-search input:focus{outline:none;border-color:var(--vf-accent)}.vf-picker-search input::placeholder{color:var(--vf-text-dim)}.vf-picker-list{flex:1;overflow-y:auto;padding:.5rem 0}.vf-picker-item{display:flex;align-items:baseline;gap:.75rem;padding:.6rem 1.25rem;cursor:pointer;transition:background .1s ease;font-size:.88rem}.vf-picker-item:hover{background:var(--vf-surface-raised)}.vf-picker-item.active{background:var(--vf-accent-subtle)}.vf-picker-item.current{border-left:3px solid var(--vf-accent)}.vf-picker-item-code{font-family:"IBM Plex Mono",var(--vf-font-mono);font-weight:700;color:var(--vf-accent);min-width:3.5rem}.vf-picker-item-desc{color:var(--vf-text-muted);line-height:1.4}.vf-picker-footer{padding:.75rem 1.25rem;border-top:1px solid var(--vf-border);display:flex;gap:1.5rem;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.65rem;color:var(--vf-text-dim)}.vf-picker-footer kbd{background:var(--vf-surface-raised);border:1px solid var(--vf-border);border-radius:3px;padding:.1rem .35rem;font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.6rem}.vf-help-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000040;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;animation:vf-fade-in .15s ease}.vf-help{background:var(--vf-surface);border:1px solid var(--vf-border);border-radius:var(--vf-radius);padding:2rem;width:420px;box-shadow:var(--vf-shadow-lg)}.vf-help h3{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.75rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--vf-text-dim);margin:0 0 1.5rem}.vf-help-row{display:flex;justify-content:space-between;align-items:center;padding:.55rem 0;border-bottom:1px solid var(--vf-border)}.vf-help-key{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.82rem;color:var(--vf-accent);font-weight:600}.vf-help-desc{font-size:.82rem;color:var(--vf-text-muted)}.vf-body-placeholder{grid-column:1 / -1;grid-row:2 / -1;display:flex;align-items:center;justify-content:center}.vf-loading{display:flex;align-items:center;justify-content:center;min-height:300px;color:var(--vf-text-dim);font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:.88rem}.vf-loading-spinner{width:24px;height:24px;border:2px solid var(--vf-border);border-top-color:var(--vf-accent);border-radius:50%;animation:vf-spin .8s linear infinite;margin-right:.75rem}@keyframes vf-spin{to{transform:rotate(360deg)}}.vf-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--vf-text-dim);text-align:center}.vf-empty-title{font-family:"IBM Plex Mono",var(--vf-font-mono);font-size:1.1rem;color:var(--vf-text-muted);margin-bottom:.5rem}.vf-empty-subtitle{font-size:.88rem}@keyframes vf-slide-in{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.vf-class-card.active{animation:vf-slide-in .2s ease-out}.search-bar{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.search-input-wrap{position:relative;width:20rem;max-width:100%}.search-input-wrap .search-icon{position:absolute;left:.625rem;top:50%;transform:translateY(-50%);color:var(--vf-text-dim);width:1rem;height:1rem;pointer-events:none}.search-input-wrap input{padding-left:2rem}.search-toast{padding:.625rem .875rem;border-radius:var(--vf-radius-sm);color:#fff;display:flex;justify-content:space-between;align-items:center;font-size:.8125rem}.search-toast.success{background:var(--vf-success)}.search-toast.error{background:var(--vf-danger)}.search-toast button{background:none;border:none;color:#fff;cursor:pointer;padding:.125rem;opacity:.8}.search-toast button:hover{opacity:1}.bulk-toolbar{display:flex;gap:.375rem;align-items:center}.bulk-toolbar .btn{font-size:.75rem;padding:.3125rem .625rem;display:inline-flex;align-items:center;gap:.25rem}.bulk-toolbar .btn svg{width:.8125rem;height:.8125rem}:root{--vf-bg: #f8f8f7;--vf-surface: #ffffff;--vf-surface-raised: #f0efed;--vf-border: #dddbd6;--vf-text: #1c1c1a;--vf-text-muted: #65635e;--vf-text-dim: #a09d97;--vf-accent: #3b74e0;--vf-accent-hover: #2b5fc0;--vf-accent-subtle: rgba(59, 116, 224, .08);--vf-success: #16a364;--vf-success-bg: rgba(22, 163, 100, .08);--vf-danger: #dc3545;--vf-danger-bg: rgba(220, 53, 69, .07);--vf-warning: #d97706;--vf-code-bg: #f2f1ef;--vf-code-text: #3b74e0;--vf-font-mono: "JetBrains Mono", "Fira Code", "SF Mono", "Cascadia Code", "Consolas", monospace;--vf-font-body: "DM Sans", "Inter", -apple-system, BlinkMacSystemFont, sans-serif;--vf-radius: 8px;--vf-radius-sm: 4px;--vf-transition: .2s ease-out;--vf-shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--vf-shadow: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--vf-shadow-lg: 0 4px 16px rgba(0, 0, 0, .1)}body{background-color:var(--vf-bg);color:var(--vf-text);font-family:var(--vf-font-body)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:var(--vf-bg)}::-webkit-scrollbar-thumb{background:var(--vf-border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--vf-text-dim)}code{font-family:var(--vf-font-mono)}.btn{padding:.5rem 1rem;border-radius:var(--vf-radius-sm);font-weight:500;transition:background-color .15s ease,color .15s ease,border-color .15s ease,opacity .15s ease;cursor:pointer;border:none;font-family:var(--vf-font-body)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background-color:var(--vf-accent);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--vf-accent-hover)}.btn-success{background-color:var(--vf-success);color:#fff}.btn-success:hover:not(:disabled){background-color:#15b86c}.btn-danger{background-color:var(--vf-danger);color:#fff}.btn-danger:hover:not(:disabled){background-color:#c82333}.btn-secondary{background-color:var(--vf-surface-raised);color:var(--vf-text);border:1px solid var(--vf-border)}.btn-secondary:hover:not(:disabled){border-color:var(--vf-text-dim)}.card{background-color:var(--vf-surface);border-radius:var(--vf-radius);border:1px solid var(--vf-border);padding:1.5rem}.input{display:block;width:100%;padding:.5rem .75rem;border:1px solid var(--vf-border);border-radius:var(--vf-radius-sm);font-size:.875rem;background-color:var(--vf-code-bg);color:var(--vf-text)}.input:focus{outline:none;border-color:var(--vf-accent);box-shadow:0 0 0 3px #3b74e01f}.input::placeholder{color:var(--vf-text-dim)}.label{display:block;font-size:.875rem;font-weight:500;color:var(--vf-text-muted);margin-bottom:.25rem}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2365635e' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .5rem center;padding-right:2rem}
