.cv-page{min-height:100vh;padding:4rem 1rem 6rem;background:var(--bg)}.cv-container{max-width:56rem;margin:0 auto}.cv-controls{position:fixed;bottom:2rem;right:2rem;z-index:100;flex-direction:column;align-items:flex-end}.cv-controls,.cv-toggle-row{display:flex;gap:.5rem}.cv-pill-toggle{display:flex;align-items:center;gap:.25rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-full);padding:.25rem .625rem;box-shadow:0 2px 8px #0000001a}.cv-toggle-btn{background:none;border:none;padding:.1rem .35rem;font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:color var(--transition-fast);letter-spacing:.04em;white-space:nowrap}.cv-toggle-btn.active{color:var(--accent)}.cv-toggle-btn:hover:not(.active){color:var(--text-secondary)}.cv-toggle-sep{color:var(--border);font-size:var(--text-xs);user-select:none}.cv-print-btn{display:flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;background:var(--accent);color:var(--accent-text);border:none;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;box-shadow:0 4px 14px #0000002e;transition:transform var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.cv-print-btn:hover{background:var(--accent-hover);transform:translateY(-2px);box-shadow:0 6px 18px #00000038}.cv-print-btn i{font-size:.9rem}.cv-header{text-align:center;padding-bottom:2rem;margin-bottom:2.5rem;border-bottom:2px solid var(--border)}.cv-name{font-size:var(--text-4xl);font-weight:var(--font-bold);color:var(--text-primary);letter-spacing:-.02em;margin:0 0 .375rem}.cv-label{font-size:var(--text-base);color:var(--text-secondary);margin:0 0 1.25rem}.cv-contacts{display:flex;flex-wrap:wrap;gap:.625rem 1.25rem;justify-content:center}.cv-contact{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--text-sm);color:var(--text-secondary);text-decoration:none;transition:color var(--transition-fast)}.cv-contact i{font-size:.8rem}.cv-contact i,.cv-contact:hover{color:var(--accent)}.cv-body{display:grid;grid-template-columns:1fr 260px;gap:3rem;align-items:start}.cv-section{margin-bottom:2.25rem}.cv-section:last-child{margin-bottom:0}.cv-section-title{font-size:.65rem;font-weight:var(--font-bold);text-transform:uppercase;letter-spacing:.12em;color:var(--accent);margin:0 0 .875rem;padding-bottom:.4rem;border-bottom:1px solid var(--border)}.cv-summary{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-relaxed);margin:0}.cv-items{gap:1.25rem}.cv-item,.cv-items{display:flex;flex-direction:column}.cv-item{gap:.3rem}.cv-item-top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.cv-item-title{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--text-primary);margin:0}.cv-item-subtitle{font-size:var(--text-xs);color:var(--text-secondary);display:block;margin-top:.15rem}.cv-item-period{font-size:var(--text-xs);color:var(--text-muted);white-space:nowrap;flex-shrink:0;padding-top:.1rem}.cv-item-link{color:inherit;text-decoration:none;transition:color var(--transition-fast)}.cv-item-link i{font-size:.6rem;margin-left:.3rem;vertical-align:middle}.cv-item-link i,.cv-item-link:hover{color:var(--accent)}.cv-item-link--repo{margin-left:.5rem}.cv-item-link--repo i{font-size:.75rem;margin-left:0}.cv-item-problem{font-size:var(--text-xs);color:var(--text-muted);font-style:italic;margin:.1rem 0 0}.cv-item-desc,.cv-item-problem{line-height:var(--leading-relaxed)}.cv-item-desc{font-size:var(--text-sm);color:var(--text-secondary);margin:.2rem 0 0}.cv-highlights{margin:.35rem 0 0 1.1rem;padding:0}.cv-highlights li{font-size:var(--text-sm);color:var(--text-secondary);line-height:var(--leading-relaxed);margin-bottom:.2rem}.cv-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.5rem}.cv-tag{font-size:.68rem;padding:.15rem .55rem;border-radius:var(--radius-full);background:var(--bg-elevated);color:var(--text-secondary);border:1px solid var(--border);font-weight:var(--font-medium)}.cv-skill-group{margin-bottom:.875rem}.cv-skill-group:last-child{margin-bottom:0}.cv-skill-name{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--text-primary);display:block;margin-bottom:.2rem}.cv-skill-list{font-size:var(--text-xs);color:var(--text-secondary);line-height:var(--leading-relaxed);margin:0}.cv-competencies{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.cv-competency{font-size:var(--text-sm);color:var(--text-secondary);padding-left:.875rem;position:relative;line-height:var(--leading-normal)}.cv-competency:before{content:"–";position:absolute;left:0;color:var(--accent)}.cv-lang-row{display:flex;justify-content:space-between;align-items:center;padding:.35rem 0;border-bottom:1px solid var(--border)}.cv-lang-row:last-child{border-bottom:none}.cv-lang-name{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--text-primary)}.cv-lang-fluency{font-size:var(--text-xs);color:var(--text-muted)}.cv-cert-row{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-top:.1rem}@media(max-width:768px){.cv-page{padding:2rem 1rem 8rem}.cv-name{font-size:var(--text-3xl)}.cv-body{grid-template-columns:1fr;gap:0}.cv-sidebar{border-top:1px solid var(--border);padding-top:2rem;margin-top:.5rem}.cv-toggle-row{flex-direction:column;align-items:flex-end}}@media print{@page{margin:1.5cm 2cm;size:A4}.cv-controls,footer,nav{display:none!important}.cv-page{padding:0!important;background:#fff!important;min-height:unset}.cv-container{max-width:100%!important}.cv-header{border-color:#d1d5db!important}.cv-name{color:#111!important}.cv-competency,.cv-item-desc,.cv-item-problem,.cv-item-subtitle,.cv-label,.cv-skill-list,.cv-summary{color:#444!important}.cv-item-link{color:#111!important;text-decoration:none!important}.cv-item-link i{display:none!important}.cv-contact,.cv-highlights li,.cv-item-period,.cv-lang-fluency{color:#555!important}.cv-contact i,.cv-section-title{color:#0284c7!important}.cv-section-title{border-color:#d1d5db!important}.cv-item-title,.cv-lang-name,.cv-skill-name{color:#111!important}.cv-tag{background:#f3f4f6!important;color:#374151!important;border-color:#d1d5db!important}.cv-lang-row{border-color:#e5e7eb!important}.cv-competency:before{color:#0284c7!important}.cv-body{grid-template-columns:1fr 220px;gap:2rem}}