.andrew-johnson-resume-contact{padding:0;background:var(--color-background);display:flex;flex-direction:column;gap:var(--spacing-lg);align-items:flex-start;width:100%;max-width:930px}.andrew-johnson-resume-contact-header{display:flex;gap:var(--spacing-md);align-items:center}.andrew-johnson-resume-contact-header-title{font-weight:var(--font-weight-medium);font-size:var(--text-2xl);white-space:nowrap}.andrew-johnson-resume-contact-header-title,.andrew-johnson-resume-contact-heading{font-family:var(--font-primary);line-height:var(--line-height-tight);color:var(--color-text-primary);letter-spacing:var(--letter-spacing-tight)}.andrew-johnson-resume-contact-heading{font-weight:var(--font-weight-bold);font-size:var(--text-3xl);width:100%}.andrew-johnson-resume-contact-content{width:100%;display:flex;gap:var(--spacing-xl);align-items:flex-start}.andrew-johnson-resume-contact-details{flex:1;display:flex;flex-direction:column;gap:var(--spacing-md);align-items:flex-start;justify-content:center;min-width:0}.andrew-johnson-resume-contact-detail{background-color:var(--color-surface);display:flex;gap:var(--spacing-sm);align-items:center;padding:var(--spacing-sm);border-radius:var(--border-radius-normal);width:100%;border:var(--border-width) var(--border-style) var(--color-border);transition:all .3s ease}.andrew-johnson-resume-contact-detail:hover{border-color:var(--color-primary);box-shadow:0 0 15px rgba(var(--color-primary-rgb),.2)}.andrew-johnson-resume-contact-detail-emoji{font-size:var(--text-xl);line-height:1;flex-shrink:0;display:flex;align-items:center;justify-content:center}.andrew-johnson-resume-contact-detail-info{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;flex:1;min-width:0}.andrew-johnson-resume-contact-detail-label{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);letter-spacing:var(--letter-spacing-tight);white-space:nowrap;width:100%}.andrew-johnson-resume-contact-detail-value{width:100%}.andrew-johnson-resume-contact-detail-value a{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;text-decoration:none;transition:color .3s ease}.andrew-johnson-resume-contact-detail-value a:hover{color:var(--color-primary)}.andrew-johnson-resume-contact-form{flex:1;display:flex;flex-direction:column;gap:var(--spacing-md);align-items:flex-start;min-width:0;overflow:hidden}.andrew-johnson-resume-contact-form-field{width:100%;position:relative}.andrew-johnson-resume-contact-form-input{background-color:var(--color-surface);width:100%;height:40px;padding:var(--spacing-sm) var(--spacing-md);border:var(--border-width) var(--border-style) var(--color-border);border-radius:var(--border-radius-sm);font-family:var(--font-primary);font-weight:var(--font-weight-normal);font-size:var(--text-base);line-height:var(--line-height-normal);color:var(--color-text-primary);outline:none;transition:all .3s ease}.andrew-johnson-resume-contact-form-input::placeholder{color:var(--color-text-muted);font-style:italic}.andrew-johnson-resume-contact-form-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(var(--color-primary-rgb),.2)}.andrew-johnson-resume-contact-form-input-border{position:absolute;inset:0;pointer-events:none}.andrew-johnson-resume-contact-form-input-border,.andrew-johnson-resume-contact-form-textarea{border:var(--border-width) var(--border-style) var(--color-border);border-radius:var(--border-radius-sm)}.andrew-johnson-resume-contact-form-textarea{background-color:var(--color-surface);width:100%;min-height:120px;padding:var(--spacing-sm) var(--spacing-md);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-primary);resize:vertical;outline:none;transition:all .3s ease}.andrew-johnson-resume-contact-form-textarea::placeholder{color:var(--color-text-muted);font-style:italic}.andrew-johnson-resume-contact-form-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px rgba(var(--color-primary-rgb),.2)}.andrew-johnson-resume-contact-form-textarea-border{position:absolute;inset:0;border:var(--border-width) var(--border-style) var(--color-border);border-radius:var(--border-radius-sm);pointer-events:none}.andrew-johnson-resume-contact-form-submit{width:100%;height:40px;margin-top:var(--spacing-sm)}.andrew-johnson-resume-contact-form-button{width:100%;height:100%;background-color:var(--color-primary);border:var(--border-width) var(--border-style) var(--color-primary);border-radius:var(--border-radius-normal);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);letter-spacing:var(--letter-spacing-tight);cursor:pointer;white-space:nowrap;transition:all .3s ease;display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs)}.andrew-johnson-resume-contact-form-button: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-contact-form-button:disabled{opacity:.6;cursor:not-allowed;transform:none}.andrew-johnson-resume-contact-status{padding:var(--spacing-md);border-radius:var(--border-radius);font-family:var(--font-primary);font-size:var(--text-sm);display:flex;align-items:center;gap:var(--spacing-sm);animation:slideIn .3s ease}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.andrew-johnson-resume-contact-status-success{background-color:rgba(var(--color-success-rgb),.1);border:var(--border-width) var(--border-style) var(--color-success);color:var(--color-success)}.andrew-johnson-resume-contact-status-error{background-color:rgba(var(--color-error-rgb),.1);border:var(--border-width) var(--border-style) var(--color-error);color:var(--color-error)}.andrew-johnson-resume-contact-editable-button-text,.andrew-johnson-resume-contact-editable-emoji,.andrew-johnson-resume-contact-editable-heading,.andrew-johnson-resume-contact-editable-label,.andrew-johnson-resume-contact-editable-title,.andrew-johnson-resume-contact-editable-value{background:transparent;border:none;border-bottom:2px dashed var(--color-border);color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;outline:none;padding:2px 4px;margin:-2px -4px;transition:all .2s ease;min-width:0;line-height:inherit;vertical-align:top;display:inline-block}.andrew-johnson-resume-contact-editable-button-text:hover,.andrew-johnson-resume-contact-editable-emoji:hover,.andrew-johnson-resume-contact-editable-heading:hover,.andrew-johnson-resume-contact-editable-label:hover,.andrew-johnson-resume-contact-editable-title:hover,.andrew-johnson-resume-contact-editable-value:hover{border-bottom-color:var(--color-primary);background:rgba(var(--color-primary-rgb),.05)}.andrew-johnson-resume-contact-editable-button-text:focus,.andrew-johnson-resume-contact-editable-emoji:focus,.andrew-johnson-resume-contact-editable-heading:focus,.andrew-johnson-resume-contact-editable-label:focus,.andrew-johnson-resume-contact-editable-title:focus,.andrew-johnson-resume-contact-editable-value:focus{outline:none;border-bottom-color:var(--color-primary);background:rgba(var(--color-primary-rgb),.1)}.andrew-johnson-resume-contact-editable-title{font-family:var(--font-primary);font-weight:var(--font-weight-medium);font-size:var(--text-2xl);color:var(--color-text-primary)}.andrew-johnson-resume-contact-editable-heading{font-family:var(--font-primary);font-weight:var(--font-weight-bold);font-size:var(--text-3xl);color:var(--color-text-primary)}.andrew-johnson-resume-contact-editable-emoji{font-size:var(--text-xl);text-align:center;border-bottom:none!important}.andrew-johnson-resume-contact-editable-emoji:focus,.andrew-johnson-resume-contact-editable-emoji:hover{border-bottom:none!important}.andrew-johnson-resume-contact-detail-editing{position:relative}.andrew-johnson-resume-contact-add-btn,.andrew-johnson-resume-contact-remove-btn{background:var(--color-primary);color:var(--color-background);border:none;border-radius:var(--border-radius);padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--text-sm);font-family:var(--font-primary);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:var(--spacing-xs);white-space:nowrap}.andrew-johnson-resume-contact-remove-btn{background:var(--color-error)}.andrew-johnson-resume-contact-add-btn:hover,.andrew-johnson-resume-contact-remove-btn:hover{background:var(--color-secondary);transform:translateY(-1px);box-shadow:0 2px 8px rgba(var(--color-primary-rgb),.3)}.andrew-johnson-resume-contact-detail{position:relative}.andrew-johnson-resume-contact-remove-btn{position:absolute;top:-8px;right:-8px;z-index:2;width:20px;height:20px;border-radius:var(--border-radius-full);display:flex;align-items:center;justify-content:center;padding:0;font-size:var(--text-xs);opacity:.8;transition:all .2s ease;box-shadow:var(--shadow-sm)}.andrew-johnson-resume-contact-remove-btn:hover{opacity:1;transform:translateY(-1px) scale(1.1);box-shadow:var(--shadow)}.andrew-johnson-resume-contact-add-info{display:flex;justify-content:center;padding:var(--spacing-md) 0}.andrew-johnson-resume-contact-add-btn{background:transparent;border:2px dashed var(--color-border);color:var(--color-text-secondary);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--text-sm)}.andrew-johnson-resume-contact-add-btn:hover{color:white;border-color:var(--color-primary);background:var(--color-primary)}.andrew-johnson-resume-contact-form-input-editing,.andrew-johnson-resume-contact-form-textarea-editing{color:var(--color-text-secondary);font-style:italic;border-style:dashed}.andrew-johnson-resume-contact-form-input-editing:focus,.andrew-johnson-resume-contact-form-textarea-editing:focus{border-style:solid;font-style:normal;color:var(--color-text-primary)}.andrew-johnson-resume-contact-editable-button-text{background:transparent!important;border:none!important;color:inherit!important;padding:0!important;font-size:inherit!important;font-weight:inherit!important;text-align:center}.andrew-johnson-resume-contact-editable-button-text:focus,.andrew-johnson-resume-contact-editable-button-text:hover{background:rgba(var(--color-primary-rgb),.1)!important;border:var(--border-width) var(--border-style) var(--color-primary)!important;padding:var(--spacing-xs)!important;border-radius:var(--border-radius)!important}@media (max-width:768px){.andrew-johnson-resume-contact{padding:0 var(--spacing-lg)}.andrew-johnson-resume-contact-content{flex-direction:column;gap:var(--spacing-xl)}.andrew-johnson-resume-contact-heading{font-size:var(--text-2xl)}.andrew-johnson-resume-contact-detail-info{min-width:0}.andrew-johnson-resume-contact-remove-btn{width:18px;height:18px;top:-6px;right:-6px}.andrew-johnson-resume-contact-add-btn{padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--text-xs)}}@media (max-width:480px){.andrew-johnson-resume-contact{padding:0 var(--spacing-md);gap:var(--spacing-md)}.andrew-johnson-resume-contact-header-title,.andrew-johnson-resume-contact-heading{font-size:var(--text-xl)}}