.btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);
    border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;cursor:pointer;
    border:none;transition:all var(--transition);white-space:nowrap}
.btn-primary{background:var(--color-primary);color:#fff}
.btn-primary:hover{background:var(--color-primary-hover)}
.btn-ghost{background:transparent;color:var(--color-text-muted);border:1px solid var(--color-border)}
.btn-ghost:hover{background:var(--color-surface-offset);color:var(--color-text)}
.btn-danger{background:transparent;color:var(--color-error);border:1px solid var(--color-border)}
.btn-danger:hover{background:var(--color-error);color:#fff}
.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}

.card{background:var(--color-surface);border:1px solid var(--color-border);
    border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-sm)}
.card-sm{padding:var(--space-4)}
.card-title{font-size:var(--text-sm);font-weight:600;color:var(--color-text-muted);
    text-transform:uppercase;letter-spacing:0.05em;margin-bottom:var(--space-4)}
.card-value{font-family:var(--font-display);font-size:var(--text-xl);font-weight:800;
    font-variant-numeric:tabular-nums lining-nums;letter-spacing:-0.02em}
.card-delta{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1)}
.card-delta.up{color:var(--color-success)}
.card-delta.down{color:var(--color-error)}

.form-group{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4)}
.form-label{font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted)}
.form-input{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);
    border:1px solid var(--color-border);background:var(--color-surface-2);
    font-size:var(--text-sm);outline:none;transition:border-color var(--transition)}
.form-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in oklch,var(--color-primary) 20%,transparent)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}
.form-row-3{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--space-4)}

.modal-overlay{position:fixed;inset:0;background:oklch(0.1 0 0/0.6);backdrop-filter:blur(4px);
    z-index:100;display:none;align-items:center;justify-content:center;padding:var(--space-4)}
.modal-overlay.open{display:flex}
.modal{background:var(--color-surface);border:1px solid var(--color-border);
    border-radius:var(--radius-xl);padding:var(--space-8);width:100%;max-width:560px;
    box-shadow:var(--shadow-lg);max-height:90dvh;overflow-y:auto}
.modal-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:800;
    margin-bottom:var(--space-6);letter-spacing:-0.02em}
.modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end;margin-top:var(--space-6)}

.workout-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}
.workout-table th{text-align:left;padding:var(--space-3) var(--space-4);
    font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:0.05em;
    color:var(--color-text-faint);border-bottom:1px solid var(--color-divider)}
.workout-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid oklch(from var(--color-text) l c h/0.05);
    font-variant-numeric:tabular-nums;vertical-align:middle}
.workout-table tr:hover td{background:var(--color-surface-offset)}
.workout-table tr:last-child td{border-bottom:none}

.sets-list{display:flex;flex-direction:column;gap:var(--space-2)}
.set-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);
    background:var(--color-surface-offset);border-radius:var(--radius-md);font-size:var(--text-sm)}
.set-num{width:24px;height:24px;border-radius:var(--radius-full);background:var(--color-primary-highlight);
    color:var(--color-primary);font-size:var(--text-xs);font-weight:700;
    display:flex;align-items:center;justify-content:center;flex-shrink:0}
.set-detail{flex:1;display:flex;gap:var(--space-4);font-variant-numeric:tabular-nums}
.set-tag{font-size:var(--text-xs);padding:2px var(--space-2);border-radius:var(--radius-full);
    font-weight:500;background:var(--color-primary-highlight);color:var(--color-primary)}
.set-tag.pr{background:oklch(from var(--color-gold) l c h/0.2);color:var(--color-gold)}

.badge{display:inline-flex;align-items:center;gap:4px;padding:2px var(--space-2);
    border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600}
.badge-primary{background:var(--color-primary-highlight);color:var(--color-primary)}
.badge-success{background:oklch(from var(--color-success) l c h/0.15);color:var(--color-success)}
.badge-warning{background:oklch(from var(--color-warning) l c h/0.15);color:var(--color-warning)}

.exercise-card{background:var(--color-surface);border:1px solid var(--color-border);
    border-radius:var(--radius-lg);padding:var(--space-4);cursor:pointer;
    transition:all var(--transition);position:relative;overflow:hidden}
.exercise-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;
    background:var(--color-primary);border-radius:0 0 0 0}
.exercise-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px);border-color:var(--color-primary)}
.exercise-name{font-weight:600;margin-bottom:var(--space-1)}
.exercise-meta{font-size:var(--text-xs);color:var(--color-text-muted)}
.exercise-pr{font-size:var(--text-xs);color:var(--color-gold);font-weight:600;margin-top:var(--space-1)}

.progress-bar{height:6px;background:var(--color-surface-dynamic);border-radius:var(--radius-full);overflow:hidden}
.progress-fill{height:100%;border-radius:var(--radius-full);background:var(--color-primary);
    transition:width 0.6s cubic-bezier(0.16,1,0.3,1)}

.streak-dots{display:flex;gap:var(--space-2);flex-wrap:wrap}
.streak-dot{width:32px;height:32px;border-radius:var(--radius-md);
    background:var(--color-surface-dynamic);font-size:var(--text-xs);
    display:flex;align-items:center;justify-content:center;color:var(--color-text-faint)}
.streak-dot.done{background:var(--color-primary);color:#fff;font-weight:600}
.streak-dot.today{outline:2px solid var(--color-primary);outline-offset:2px}

.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;
    padding:var(--space-16) var(--space-8);color:var(--color-text-muted)}
.empty-icon{width:48px;height:48px;margin-bottom:var(--space-4);color:var(--color-text-faint);
    display:flex;align-items:center;justify-content:center}
.empty-state h3{color:var(--color-text);margin-bottom:var(--space-2);font-size:var(--text-lg)}
.empty-state p{max-width:36ch;margin-bottom:var(--space-6);font-size:var(--text-sm)}

.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}
.section-title{font-family:var(--font-display);font-size:var(--text-lg);font-weight:800;letter-spacing:-0.02em}

.divider{height:1px;background:var(--color-divider);margin:var(--space-6) 0}

.chip-group{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}
.chip{padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);
    font-size:var(--text-xs);font-weight:500;cursor:pointer;border:1px solid var(--color-border);
    color:var(--color-text-muted);transition:all var(--transition)}
.chip:hover,.chip.active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}

.chart-container{position:relative;width:100%;height:220px}
.chart-container-tall{position:relative;width:100%;height:300px}

#toast{position:fixed;bottom:var(--space-6);right:var(--space-6);z-index:200;
    display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}
.toast-item{background:var(--color-surface-2);border:1px solid var(--color-border);
    border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);
    box-shadow:var(--shadow-lg);font-size:var(--text-sm);display:flex;align-items:center;gap:var(--space-2);
    animation:slideIn 0.3s cubic-bezier(0.16,1,0.3,1);pointer-events:auto}
.toast-item.success{border-color:var(--color-success);color:var(--color-success)}
@keyframes slideIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}