.andrew-johnson-resume-hero{flex-shrink:0;width:360px}.andrew-johnson-resume-hero-portrait{background-color:var(--color-surface);border-radius:var(--border-radius-xl);padding:var(--spacing-lg);width:100%;display:flex;flex-direction:column;gap:var(--spacing-xl);align-items:center;position:sticky;top:60px;border:var(--border-width) var(--border-style) var(--card-border);box-shadow:var(--shadow)}.andrew-johnson-resume-hero-portrait-image{width:100%;aspect-ratio:320/320;position:relative;border-radius:var(--border-radius-xl)}.andrew-johnson-resume-hero-portrait-image-inner{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:var(--border-radius-xl)}.andrew-johnson-resume-hero-portrait-image-border{position:absolute;inset:0;border:var(--border-width) var(--border-style) var(--card-border);border-radius:var(--border-radius-xl);pointer-events:none}.andrew-johnson-resume-hero-portrait-content{gap:var(--spacing-lg)}.andrew-johnson-resume-hero-portrait-content,.andrew-johnson-resume-hero-portrait-info{width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center}.andrew-johnson-resume-hero-portrait-info{gap:var(--spacing-md)}.andrew-johnson-resume-hero-portrait-badge{display:flex;gap:var(--spacing-sm);align-items:center;justify-content:center;padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--border-radius-normal);position:relative;border:var(--border-width) var(--border-style) rgba(var(--color-text-primary-rgb),.12);transition:all .3s ease}.andrew-johnson-resume-hero-portrait-badge:hover{border-color:var(--color-primary);box-shadow:0 0 15px rgba(var(--color-primary-rgb),.2)}.andrew-johnson-resume-hero-portrait-badge-icon{width:24px;height:24px;position:relative;flex-shrink:0}.andrew-johnson-resume-hero-portrait-badge-icon-inner{width:100%;height:100%;background:var(--color-primary);border-radius:var(--border-radius-full);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;box-shadow:0 0 0 0 rgba(var(--color-primary-rgb),.4)}50%{opacity:.8;box-shadow:0 0 0 8px rgba(var(--color-primary-rgb),0)}}.andrew-johnson-resume-hero-portrait-badge-text{font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-base);line-height:var(--line-height-relaxed);color:var(--color-text-primary);letter-spacing:var(--letter-spacing-tight);white-space:nowrap}.andrew-johnson-resume-hero-portrait-badge-border{position:absolute;inset:0;border:var(--border-width) var(--border-style) rgba(var(--color-text-primary-rgb),.12);border-radius:var(--border-radius-normal);pointer-events:none}.andrew-johnson-resume-hero-portrait-name{font-family:var(--font-primary);font-weight:var(--font-weight-bold);font-size:var(--text-3xl);line-height:var(--line-height-tight);color:var(--color-text-primary);text-align:center;letter-spacing:var(--letter-spacing-tight);width:100%}.andrew-johnson-resume-hero-portrait-title{font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-lg);line-height:var(--line-height-normal);color:var(--color-text-secondary);text-align:center;letter-spacing:var(--letter-spacing-normal)}.andrew-johnson-resume-hero-portrait-description{font-family:var(--font-primary);font-weight:var(--font-weight-normal);font-size:var(--text-base);line-height:var(--line-height-relaxed);color:var(--color-text-secondary);text-align:center}.andrew-johnson-resume-hero-portrait-description p{margin:0}.andrew-johnson-resume-hero-portrait-stats{width:100%;display:flex;flex-wrap:wrap;gap:var(--spacing-sm);align-items:center;justify-content:center}.andrew-johnson-resume-hero-portrait-stat{min-width:90px;padding:var(--spacing-sm);border-radius:var(--border-radius-normal);border:var(--border-width) var(--border-style) rgba(var(--color-text-primary-rgb),.12);text-align:center}.andrew-johnson-resume-hero-portrait-stat-value{font-family:var(--font-primary);font-weight:var(--font-weight-semibold);font-size:var(--text-lg);line-height:var(--line-height-tight);color:var(--color-text-primary)}.andrew-johnson-resume-hero-portrait-stat-label{font-family:var(--font-primary);font-weight:var(--font-weight-normal);font-size:var(--text-xs);line-height:var(--line-height-normal);color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide)}.andrew-johnson-resume-hero-portrait-social-wrapper{position:relative;display:flex;align-items:center;justify-content:center;width:100%}.andrew-johnson-resume-hero-portrait-social-wrapper-editing{padding:var(--spacing-sm) var(--spacing-md);border:2px dashed var(--color-border);border-radius:var(--border-radius-md);background-color:rgba(var(--color-primary-rgb),.02)}.andrew-johnson-resume-hero-portrait-social-edit-btn{position:absolute;top:-10px;right:-10px;width:28px;height:28px;border-radius:var(--border-radius-sm);background-color:var(--color-primary);border:2px solid var(--color-surface);color:white;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10;box-shadow:0 2px 8px rgba(0,0,0,.15)}.andrew-johnson-resume-hero-portrait-social-edit-btn:hover{background-color:var(--color-primary-700,var(--color-primary));transform:scale(1.1)}.andrew-johnson-resume-hero-portrait-social{display:flex;gap:var(--spacing-sm);align-items:center;justify-content:center;flex-wrap:wrap}.andrew-johnson-resume-hero-portrait-social-link{width:40px;height:40px;position:relative;display:flex;align-items:center;justify-content:center;padding:var(--spacing-sm);border-radius:var(--border-radius-normal);transition:all .3s ease}.andrew-johnson-resume-hero-portrait-social-link:hover{background-color:rgba(var(--color-primary-rgb),.1);transform:translateY(-2px)}.andrew-johnson-resume-hero-portrait-social-link-icon{width:20px;height:20px;background:rgba(var(--color-text-primary-rgb),.3);border-radius:var(--border-radius-sm);transition:all .3s ease}.andrew-johnson-resume-hero-portrait-social-link:hover .andrew-johnson-resume-hero-portrait-social-link-icon{background:var(--color-primary)}.andrew-johnson-resume-hero-portrait-social-link-react-icon{color:var(--color-text-secondary);transition:all .3s ease}.andrew-johnson-resume-hero-portrait-social-link:hover .andrew-johnson-resume-hero-portrait-social-link-react-icon{color:var(--color-primary);transform:scale(1.15)}.andrew-johnson-resume-hero-portrait-social-link-border{position:absolute;inset:0;border:var(--border-width) var(--border-style) rgba(var(--color-text-primary-rgb),.12);border-radius:var(--border-radius-normal);pointer-events:none;transition:all .3s ease}.andrew-johnson-resume-hero-portrait-social-link:hover .andrew-johnson-resume-hero-portrait-social-link-border{border-color:var(--color-primary)}.andrew-johnson-resume-hero-portrait-social-empty{font-family:var(--font-primary);font-size:var(--text-sm);color:var(--color-text-muted);font-style:italic}.andrew-johnson-resume-hero-portrait-buttons{width:100%;display:flex;gap:var(--spacing-sm);align-items:center;justify-content:center;height:42px}.andrew-johnson-resume-hero-portrait-button-download{background-color:var(--color-surface);display:flex;gap:var(--spacing-xs);align-items:center;padding:var(--spacing-sm) 0;height:100%;border-radius:var(--border-radius-normal);text-decoration:none;width:100%;justify-content:center;border:var(--border-width) var(--border-style) var(--color-border);transition:all .3s ease}.andrew-johnson-resume-hero-portrait-button-download:hover{background-color:var(--color-border);border-color:var(--color-primary);box-shadow:0 0 15px rgba(var(--color-primary-rgb),.2)}.andrew-johnson-resume-hero-portrait-button-download-icon{width:18px;height:18px;background:url(http://localhost:3845/assets/49497b561bfd8d9118a284a2c71e8bc642d01c08.png) 50%/contain no-repeat;flex-shrink:0}.andrew-johnson-resume-hero-portrait-button-download span{font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-sm);line-height:var(--line-height-normal);color:var(--color-text-secondary);white-space:nowrap;letter-spacing:var(--letter-spacing-tight)}.andrew-johnson-resume-hero-portrait-button-contact{background-color:var(--color-primary);display:flex;gap:var(--spacing-xs);align-items:center;justify-content:center;padding:var(--spacing-sm) 0;height:100%;border-radius:var(--border-radius-normal);border:var(--border-width) var(--border-style) var(--color-primary);cursor:pointer;flex:1;font-family:var(--font-primary);transition:all .3s ease}.andrew-johnson-resume-hero-portrait-button-contact:hover{background-color:transparent;color:var(--color-primary);box-shadow:0 0 20px rgba(var(--color-primary-rgb),.4);transform:translateY(-2px)}.andrew-johnson-resume-hero-portrait-button-contact-icon{width:20px;height:20px;background:url(http://localhost:3845/assets/49497b561bfd8d9118a284a2c71e8bc642d01c08.png) 50%/contain no-repeat;flex-shrink:0}.andrew-johnson-resume-hero-portrait-button-contact span{font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-sm);line-height:var(--line-height-normal);color:var(--color-background);white-space:nowrap;letter-spacing:var(--letter-spacing-tight);transition:color .3s ease}.andrew-johnson-resume-hero-portrait-button-contact:hover span{color:var(--color-primary)}.andrew-johnson-resume-hero-portrait-border{position:absolute;inset:0;border:var(--border-width) var(--border-style) var(--card-border);border-radius:var(--border-radius-xl);pointer-events:none}@media (max-width:1024px){.andrew-johnson-resume-hero{width:100%;max-width:360px;margin:0 auto}.andrew-johnson-resume-hero-portrait{position:relative;top:auto}}@media (max-width:768px){.andrew-johnson-resume-hero-portrait{padding:var(--spacing-md);gap:var(--spacing-lg)}.andrew-johnson-resume-hero-portrait-name{font-size:var(--text-2xl)}.andrew-johnson-resume-hero-portrait-buttons{flex-direction:column;height:auto;gap:var(--spacing-sm)}.andrew-johnson-resume-hero-portrait-button-contact,.andrew-johnson-resume-hero-portrait-button-download{width:100%;height:42px;flex:none}}.andrew-johnson-resume-hero-editable-cta,.andrew-johnson-resume-hero-editable-input,.andrew-johnson-resume-hero-editable-name,.andrew-johnson-resume-hero-editable-stat-label,.andrew-johnson-resume-hero-editable-stat-value,.andrew-johnson-resume-hero-editable-title{background:transparent;border:none;outline:none;font-family:inherit;font-weight:inherit;font-size:inherit;line-height:inherit;color:inherit;text-align:inherit;letter-spacing:inherit;padding:0;margin:0;width:auto;min-width:50px}.andrew-johnson-resume-hero-editable-name,.andrew-johnson-resume-hero-editable-title{text-align:center;width:100%}.andrew-johnson-resume-hero-editable-stat-value,.andrew-johnson-resume-hero-portrait-badge-text .andrew-johnson-resume-hero-editable-input{text-align:center}.andrew-johnson-resume-hero-editable-stat-label{text-align:center;text-transform:uppercase}.andrew-johnson-resume-hero-editable-cta{text-align:center;background:transparent}.andrew-johnson-resume-hero-rich-text-editor{width:100%;min-height:60px;text-align:center}.andrew-johnson-resume-hero-rich-text-editor .ProseMirror{text-align:center;padding:var(--spacing-sm);border:1px dashed rgba(var(--color-primary-rgb),.3);border-radius:var(--border-radius-sm);background:rgba(var(--color-primary-rgb),.02);transition:all .2s ease}.andrew-johnson-resume-hero-rich-text-editor .ProseMirror:focus{border-color:var(--color-primary);background:rgba(var(--color-primary-rgb),.05);box-shadow:0 0 0 2px rgba(var(--color-primary-rgb),.1)}.andrew-johnson-resume-hero-rich-text-editor .ProseMirror p{margin:0}.andrew-johnson-resume-hero-portrait-stat{position:relative}.andrew-johnson-resume-hero-stat-remove-btn{position:absolute;top:-6px;right:-6px;width:18px;height:18px;padding:0;display:flex;align-items:center;justify-content:center;background:#ef4444;color:white;border:none;border-radius:var(--border-radius-full);cursor:pointer;z-index:10;transition:all .2s ease;opacity:.9}.andrew-johnson-resume-hero-stat-remove-btn:hover{opacity:1;transform:scale(1.1);background:#dc2626}.andrew-johnson-resume-hero-add-stat{border-style:dashed;border-color:rgba(var(--color-primary-rgb),.3);background:rgba(var(--color-primary-rgb),.02);min-width:100px;cursor:pointer;transition:all .2s ease}.andrew-johnson-resume-hero-add-stat:hover{border-color:var(--color-primary);background:rgba(var(--color-primary-rgb),.05)}.andrew-johnson-resume-hero-add-stat-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-xs);width:100%;height:100%;padding:var(--spacing-sm);background:transparent;border:none;color:var(--color-primary);cursor:pointer;font-family:var(--font-primary);font-size:var(--text-xs);font-weight:var(--font-weight-medium);transition:all .2s ease}.andrew-johnson-resume-hero-add-stat-btn:hover{color:var(--color-primary)}.andrew-johnson-resume-hero-add-stat-btn span{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--letter-spacing-wide)}.editable-field-focus:focus{outline:none;background:rgba(var(--color-primary-rgb),.05);border-radius:var(--border-radius-sm);box-shadow:0 0 0 2px rgba(var(--color-primary-rgb),.2)}.ce-image-editor-wrapper{position:relative;width:100%}.andrew-johnson-resume-cv-editor{width:100%;margin-bottom:var(--spacing-sm)}.andrew-johnson-resume-cv-upload-btn{width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-md);background-color:rgba(var(--color-primary-rgb),.05);border:2px dashed var(--color-border);border-radius:var(--border-radius-md);color:var(--color-primary);font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-sm);cursor:pointer;transition:all .2s ease}.andrew-johnson-resume-cv-upload-btn:hover{background-color:rgba(var(--color-primary-rgb),.1);border-color:var(--color-primary)}.andrew-johnson-resume-cv-hint{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:var(--font-weight-normal)}.andrew-johnson-resume-cv-status{display:flex;flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-md);background-color:rgba(34,197,94,.05);border:1px solid rgba(34,197,94,.3);border-radius:var(--border-radius-md)}.andrew-johnson-resume-cv-info{display:flex;align-items:center;gap:var(--spacing-sm);flex-wrap:wrap}.andrew-johnson-resume-cv-icon-success{color:#22c55e;flex-shrink:0}.andrew-johnson-resume-cv-filename{font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-sm);color:var(--color-text-primary);word-break:break-all}.andrew-johnson-resume-cv-pending{font-family:var(--font-primary);font-size:var(--text-xs);color:var(--color-text-muted);font-style:italic}.andrew-johnson-resume-cv-actions{display:flex;gap:var(--spacing-sm);align-items:center}.andrew-johnson-resume-cv-replace-btn{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);background-color:rgba(var(--color-primary-rgb),.1);border:1px solid var(--color-primary);border-radius:var(--border-radius-sm);color:var(--color-primary);font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-xs);cursor:pointer;transition:all .2s ease}.andrew-johnson-resume-cv-replace-btn:hover{background-color:var(--color-primary);color:white}.andrew-johnson-resume-cv-remove-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;background-color:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);border-radius:var(--border-radius-sm);color:#ef4444;cursor:pointer;transition:all .2s ease}.andrew-johnson-resume-cv-remove-btn:hover{background-color:#ef4444;color:white;border-color:#ef4444}.andrew-johnson-resume-cv-download-btn{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--border-radius-sm);color:white;font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-sm);text-decoration:none;cursor:pointer;transition:all .2s ease}.andrew-johnson-resume-cv-download-btn:hover{background-color:transparent;color:var(--color-primary)}.andrew-johnson-resume-hero-cv-wrapper{position:relative;display:flex;overflow:visible;flex:1}.andrew-johnson-resume-hero-cv-wrapper-editing{padding:var(--spacing-sm);border:1px dashed var(--color-border);border-radius:var(--border-radius-md);flex:1}.andrew-johnson-resume-hero-cv-edit-btn{position:absolute;top:-8px;right:-8px;width:28px;height:28px;border-radius:var(--border-radius-sm);background-color:var(--color-surface);border:var(--border-width) var(--border-style) var(--color-border);color:var(--color-primary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;z-index:10}.andrew-johnson-resume-hero-cv-edit-btn:hover{background-color:var(--color-primary);color:var(--color-surface);border-color:var(--color-primary)}.andrew-johnson-resume-hero-cta-modal-overlay{position:fixed;inset:0;background-color:rgba(0,0,0,.6);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;padding:var(--spacing-lg)}.andrew-johnson-resume-hero-cta-modal{background-color:var(--color-surface);border:var(--border-width) var(--border-style) var(--color-border);border-radius:var(--border-radius-lg);width:100%;max-width:600px;max-height:85vh;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px rgba(0,0,0,.3)}.andrew-johnson-resume-hero-cta-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-lg);border-bottom:var(--border-width) var(--border-style) var(--color-border)}.andrew-johnson-resume-hero-cta-modal-title{font-family:var(--font-primary);font-weight:var(--font-weight-semibold);font-size:var(--text-xl);color:var(--color-text-primary);margin:0}.andrew-johnson-resume-hero-cta-modal-close{width:36px;height:36px;border-radius:var(--border-radius-sm);background-color:transparent;border:var(--border-width) var(--border-style) var(--color-border);color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.andrew-johnson-resume-hero-cta-modal-close:hover{background-color:rgba(239,68,68,.1);border-color:#ef4444;color:#ef4444}.andrew-johnson-resume-hero-cta-modal-content{padding:var(--spacing-lg);overflow-y:auto;flex:1}.andrew-johnson-resume-hero-cta-modal-section{margin-bottom:var(--spacing-xl)}.andrew-johnson-resume-hero-cta-modal-section:last-child{margin-bottom:0}.andrew-johnson-resume-hero-cta-modal-fields{display:flex;flex-direction:column;gap:var(--spacing-md)}.andrew-johnson-resume-hero-cta-modal-field{display:flex;flex-direction:column;gap:var(--spacing-xs)}.andrew-johnson-resume-hero-cta-modal-label{font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-sm);color:var(--color-text-secondary)}.andrew-johnson-resume-hero-cta-modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--spacing-sm);padding:var(--spacing-lg);border-top:var(--border-width) var(--border-style) var(--color-border)}.andrew-johnson-resume-hero-cta-modal-btn{padding:8px var(--spacing-md);border-radius:var(--border-radius-md);font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-sm);cursor:pointer;transition:all .2s ease;border:var(--border-width) var(--border-style) var(--color-border)}.andrew-johnson-resume-hero-cta-modal-btn-cancel{background-color:transparent;color:var(--color-text-secondary)}.andrew-johnson-resume-hero-cta-modal-btn-cancel:hover{background-color:var(--color-background);border-color:var(--color-text-secondary)}.andrew-johnson-resume-hero-cta-modal-btn-save{background-color:var(--color-primary);color:var(--color-selection-text);border-color:var(--color-primary)}.andrew-johnson-resume-hero-cta-modal-btn-save:hover{background-color:var(--color-primary-700);border-color:var(--color-primary-700)}@media (max-width:640px){.andrew-johnson-resume-hero-cta-modal{max-width:100%;margin:var(--spacing-md)}}