Repository: cisagov/manage.get.gov
Pull request #3788: 3684: Organization overview page [ES]
Author: login: erinysong
Created: 2025-05-15T20:32:20Z | Merged: 2025-05-27T23:48:58Z

## Ticket

<!-- PR title format: `#issue_number: Descriptive name ideally matching ticket name - [sandbox]`-->
Resolves #3684 

## Changes

<!-- What was added, updated, or removed in this PR. -->
- Add organization overview page summarizing portfolio organization pages and allowing user to navigate to organization detail sections (Org info and org senior official)
- Add breadcrumbs to org detail pages
<img width="1226" alt="image" src="https://github.com/user-attachments/assets/4b50a84f-c0ec-496e-b45b-59abcda894fb" />

<!--
    Please add/remove/edit any of the template below to fit the needs
    of this specific PR.
--->

## Context for reviewers

<!--Background context, more in-depth details of the implementation, and anything else you'd like to call out or ask reviewers.  -->

## Setup

<!--  Add any steps or code to run in this section to help others run your code.
    
    Example 1:
    ```sh
    echo "Code goes here"
    ``` 
    
    Example 2: If the PR was to add a new link with a redirect, this section could simply be:
    -go to /path/to/start/page
    -click the blue link in the <insert location>
    -notice user is redirected to <proper end location>
-->
Click on the organization page on the top right navbar. You will be directed to the new Organization overview page. The page should include section summaries for the organization's contact info and senior official and buttons that allow you to edit or view these summaries in their respective pages.

See ticket [Figma](https://www.figma.com/design/xFtGLHVrhp0lvwh0gYWnbx/.gov-registar?node-id=18284-157943&p=f&t=VMYOQKy24HO71bm8-0) for reference, also linked in ticket

## Code Review Verification Steps

### As the original developer, I have

#### Satisfied acceptance criteria and met development standards

- [x] Met the acceptance criteria, or will meet them in a subsequent PR
- [x] Created/modified automated tests
- [ ] Update documentation in READMEs and/or onboarding guide

#### Ensured code standards are met (Original Developer)
<!-- Mark "- N/A" and check at the end of each check that is not applicable to your PR -->
- [ ] If any updated dependencies on Pipfile, also update dependencies in requirements.txt.
- [ ] Interactions with external systems are wrapped in try/except
- [ ] Error handling exists for unusual or missing values

#### Validated user-facing changes (if applicable)

- [x] Tag @dotgov-designers in this PR's Reviewers for design review. If code is not user-facing, delete design reviewer checklist
- [x] Verify new pages have been added to .pa11yci file so that they will be tested with our automated accessibility testing
- [x] Checked keyboard navigability
- [x] Tested general usability, landmarks, page header structure, and links with a screen reader (such as Voiceover or ANDI)

### As a code reviewer, I have

#### Reviewed, tested, and left feedback about the changes

- [ ] Pulled this branch locally and tested it
- [ ] Verified code meets all checks above. Address any checks that are not satisfied
- [ ] Reviewed this code and left comments. Indicate if comments must be addressed before code is merged
- [ ] Checked that all code is adequately covered by tests
- [ ] Verify migrations are valid and do not conflict with existing migrations

#### Validated user-facing changes as a developer
**Note:** Multiple code reviewers can share the checklists above, a second reviewer should not make a duplicate checklist. All checks should be checked before approving, even those labeled N/A. 

- [ ] New pages have been added to .pa11yci file so that they will be tested with our automated accessibility testing
- [ ] Checked keyboard navigability
- [ ] Meets all designs and user flows provided by design/product
- [ ] Tested general usability, landmarks, page header structure, and links with a screen reader (such as Voiceover or ANDI)
- [ ] (Rarely needed) Tested as both an analyst and applicant user

### As a designer reviewer, I have

#### Verified that the changes match the design intention

- [x] Checked that the design translated visually
- [x] Checked behavior. Comment any found issues or broken flows.
- [x] Checked different states (empty, one, some, error)
- [x] Checked for landmarks, page heading structure, and links

#### Validated user-facing changes as a designer

- [x] Checked keyboard navigability
- [x] Tested general usability, landmarks, page header structure, and links with a screen reader (such as Voiceover or ANDI)
- [x] Tested with multiple browsers (check off which ones were used)
  - [x] Chrome
  - [ ] Microsoft Edge
  - [x] FireFox
  - [x] Safari
- [ ] (Rarely needed) Tested as both an analyst and applicant user

### References
- [Code review best practices](../docs/dev-practices/code_review.md)

## Screenshots

<!-- If this PR makes visible interface changes, an image of the finished interface can help reviewers
and casual observers understand the context of the changes.
A before image is optional and can be included at the submitter's discretion.

Consider using an animated image to show an entire workflow.
You may want to use [GIPHY Capture](https://giphy.com/apps/giphycapture) for this! 📸

_Please frame images to show useful context but also highlight the affected regions._
--->


Linked issue #3684: Add new organization overview page with updated breadcrumb structure
### Issue description

As part of managing multiple organizations, we want to add an organization overview page. 

### Acceptance criteria

- [x] Add new Organization overview page with section summaries and new breadcrumb structure ([annotations 4, 5, 6](https://www.figma.com/design/xFtGLHVrhp0lvwh0gYWnbx/.gov-registar?node-id=18750-120261&t=RXGAobEISKeqrqZ7-11)).  Here's another figma from the multiple organization perspective ([annotations 6, 7, 8](https://www.figma.com/design/xFtGLHVrhp0lvwh0gYWnbx/.gov-registar?node-id=18736-117816&t=UbhAHbt6kbGUSizD-11))


### Additional context

This AC was originally included in both #3633 and #3631 but was removed to break up work

### Links to other issues

- 🔄 Relates to (and originally listed as an AC for both): 
  - #3633 
  - #3631
 - Relates to design ticket #2122 
- Blocked by work to be broken out in #3631 
Linked issue comments: user: login: h-m-f-t
created_at: 2025-04-02T01:11:54Z
body: Moving to backlog. We can point and refine as we get closer to M7.
author_association: MEMBER
user: login: erinysong
created_at: 2025-05-14T22:59:10Z
body: hi @Katherine-MN @gabo0oo no rush answering this and posting mainly so I don't forget myself 😅. How do we want to rename any URLs for the portfolio organization overview page (image 1) and the organization page (image 2)? Since we haven't implemented the organization overview page, navigating to the URL manage.get.gov/organization will direct to the organization page. If it helps, the senior official page in this sidebar has the URL manage.get.gov/senior-official

Organization overview page we're adding in this ticket
<img width="987" alt="Image" src="https://github.com/user-attachments/assets/fcb6291a-c46f-44a9-864f-4f80e488b4ab" />

Organization page that the URL `/organization` directs to
<img width="1417" alt="Image" src="https://github.com/user-attachments/assets/365e0d42-e66f-4783-a648-b17461f88f78" />
author_association: CONTRIBUTOR
user: login: erinysong
created_at: 2025-05-15T16:59:03Z
body: @katypies is there any current case where a user would be able to update a senior official from the registrar? The wireframes say no users can edit senior official info but want to check if this is still the case! I set it to view only for the meantime

<img width="387" alt="Image" src="https://github.com/user-attachments/assets/91404750-c608-4f5c-ac4b-29c2c7a94d6d" />
author_association: CONTRIBUTOR

Diff:
diff --git a/src/.pa11yci b/src/.pa11yci
index 21def88c51..925d6b80a3 100644
--- a/src/.pa11yci
+++ b/src/.pa11yci
@@ -27,6 +27,9 @@
         "http://localhost:8080/request/requesting_entity/",
         "http://localhost:8080/user-profile/",
         "http://localhost:8080/members/",
-        "http://localhost:8080/members/new-member"
+        "http://localhost:8080/members/new-member",
+        "http://localhost:8080/organization",
+        "http://localhost:8080/organization/organization-info",
+        "http://localhost:8080/organization/senior-official"
     ]
 }
diff --git a/src/registrar/config/urls.py b/src/registrar/config/urls.py
index c73b735f54..bd691cedb3 100644
--- a/src/registrar/config/urls.py
+++ b/src/registrar/config/urls.py
@@ -164,9 +164,14 @@
         name="organization",
     ),
     path(
-        "senior-official/",
+        "organization/organization-info",
+        views.PortfolioOrganizationInfoView.as_view(),
+        name="organization-info",
+    ),
+    path(
+        "organization/senior-official",
         views.PortfolioSeniorOfficialView.as_view(),
-        name="senior-official",
+        name="organization-senior-official",
     ),
     path(
         "admin/analytics/export_data_type/",
diff --git a/src/registrar/permissions.py b/src/registrar/permissions.py
index 6847c16d5e..892b201a29 100644
--- a/src/registrar/permissions.py
+++ b/src/registrar/permissions.py
@@ -63,7 +63,8 @@
     "domain-requests": [HAS_PORTFOLIO_DOMAIN_REQUESTS_ANY_PERM],
     "no-portfolio-requests": [IS_PORTFOLIO_MEMBER],
     "organization": [IS_PORTFOLIO_MEMBER],
-    "senior-official": [IS_PORTFOLIO_MEMBER],
+    "organization-info": [IS_PORTFOLIO_MEMBER],
+    "organization-senior-official": [IS_PORTFOLIO_MEMBER],
     # Domain requests
     "domain-request-status": [HAS_PORTFOLIO_DOMAIN_REQUESTS_EDIT, IS_DOMAIN_REQUEST_CREATOR],
     "domain-request-status-viewonly": [HAS_PORTFOLIO_DOMAIN_REQUESTS_VIEW_ALL],
diff --git a/src/registrar/templates/domain_base.html b/src/registrar/templates/domain_base.html
index 5637fa52bf..9191785770 100644
--- a/src/registrar/templates/domain_base.html
+++ b/src/registrar/templates/domain_base.html
@@ -21,8 +21,7 @@
       {% endif %}
     </div>
 
-    <div class="tablet:grid-col">
-      <main id="main-content" class="grid-container">
+    <div class="tablet:grid-col" id="main-content">
       {% if not domain.domain_info %}
         <div class="usa-alert usa-alert--error margin-bottom-2">
           <div class="usa-alert__body">
@@ -63,7 +62,6 @@ <h1 class="break-word">Domain overview</h1>
 
         {% endblock %}  {# domain_content #}
       {% endif %}
-      </main>
     </div>
   </div>
 </div>
diff --git a/src/registrar/templates/domain_detail.html b/src/registrar/templates/domain_detail.html
index e4c3f703d4..9a99440de7 100644
--- a/src/registrar/templates/domain_detail.html
+++ b/src/registrar/templates/domain_detail.html
@@ -20,8 +20,8 @@
   {% endblock breadcrumb %}
 
   {{ block.super }}
-  <div class="margin-top-4 tablet:grid-col-10">
-    <h2 class="string-wrap">{{ domain.name }}</h2>
+  <div class="margin-top-2 tablet:grid-col-10">
+    <h2 class="string-wrap margin-top-2">{{ domain.name }}</h2>
     <div
         class="usa-summary-box padding-y-2 margin-bottom-1"
         role="region"
@@ -108,7 +108,7 @@ <h3 class="margin-top-3"> DNS name servers </h3>
     {% else %}
       {% include "includes/summary_item.html" with title='DNSSEC' value='Not enabled' edit_link=url editable=is_editable %}
     {% endif %}
-
+    
     {% if portfolio %}
       {% if has_any_domains_portfolio_permission and has_edit_portfolio_permission %}
         {% url 'domain-suborganization' domain_pk=domain.id as url %}
diff --git a/src/registrar/templates/domain_request_form.html b/src/registrar/templates/domain_request_form.html
index b9844aa06c..ff0d12dd63 100644
--- a/src/registrar/templates/domain_request_form.html
+++ b/src/registrar/templates/domain_request_form.html
@@ -8,8 +8,7 @@
     <div class="tablet:grid-col-3 grid-col--sidenav">
       {% include 'domain_request_sidebar.html' %}
     </div>
-    <div class="tablet:grid-col">
-      <main id="main-content" class="grid-container register-form-step">
+    <div class="tablet:grid-col register-form-step" id="main-content">
         <input type="hidden" class="display-none" id="wizard-domain-request-id" value="{{domain_request_id}}"/>
         {% if steps.current == steps.first %}
           {% if portfolio %}
@@ -142,8 +141,6 @@ <h1> {{form_titles|get_item:steps.current}} </h1>
         </form>
 
 {% block after_form_content %}{% endblock %}
-
-      </main>
     </div> 
   </div>
 </div>
diff --git a/src/registrar/templates/includes/contact.html b/src/registrar/templates/includes/contact.html
index 68c2435581..91fff269a9 100644
--- a/src/registrar/templates/includes/contact.html
+++ b/src/registrar/templates/includes/contact.html
@@ -2,5 +2,5 @@
     {{ contact.get_formatted_name }}<br />
     {% if  contact.title  %}{{ contact.title }}<br />{% endif %}
     {% if  contact.email  %}{{ contact.email }}<br />{% endif %}
-    {% if  contact.phone  %}{{ contact.phone.as_national }}{% endif %}
+    {% if not portfolio and contact.phone  %}{{ contact.phone.as_national }}{% endif %}
 </address>
diff --git a/src/registrar/templates/includes/organization_address.html b/src/registrar/templates/includes/organization_address.html
index d6126d681f..5b03620c03 100644
--- a/src/registrar/templates/includes/organization_address.html
+++ b/src/registrar/templates/includes/organization_address.html
@@ -1,6 +1,6 @@
 <address>
-    {% if  organization.federal_agency  %}
-        {{ organization.federal_agency }}<br />
+    {% if not portfolio and organization.federal_agency %}
+    {{ organization.federal_agency }}<br />
     {% endif %}
     {% if  organization.organization_name  %}
         {{ organization.organization_name }}
diff --git a/src/registrar/templates/includes/summary_item.html b/src/registrar/templates/includes/summary_item.html
index 0ce7910bba..057423488d 100644
--- a/src/registrar/templates/includes/summary_item.html
+++ b/src/registrar/templates/includes/summary_item.html
@@ -1,6 +1,8 @@
 {% load static url_helpers %}
 
-<section class="summary-item margin-top-3">
+{% if portfolio_first_section %} <section  class="summary-item margin-top-2">
+{% else %} <section class="summary-item margin-top-3">
+{% endif %}
   <hr class="" aria-hidden="true" />
   <div class="display-flex flex-justify">
     <div>
diff --git a/src/registrar/templates/portfolio_base.html b/src/registrar/templates/portfolio_base.html
index 28e8b60e0d..e356e7a6eb 100644
--- a/src/registrar/templates/portfolio_base.html
+++ b/src/registrar/templates/portfolio_base.html
@@ -7,10 +7,12 @@
         <main class="grid-container grid-container--widescreen">
             {% if user.is_authenticated %}
             {# the entire logged in page goes here #}
+
+            {# portfolio organization page layout #}
+            {% block portfolio_organization_content %}{% endblock %}
             
             <div class="grid-row {% if not is_widescreen_centered %}max-width--grid-container{% endif %}">
               <div class="desktop:grid-col-10{% if not is_widescreen_centered %} tablet:grid-col-11{% else %} tablet:grid-col-12 desktop:grid-offset-1{% endif %}">
-            
                 {% block portfolio_content %}{% endblock %}
             
               </div>            
diff --git a/src/registrar/templates/portfolio_organization.html b/src/registrar/templates/portfolio_organization.html
index 2cc7e3f0fa..eaca5767e8 100644
--- a/src/registrar/templates/portfolio_organization.html
+++ b/src/registrar/templates/portfolio_organization.html
@@ -1,13 +1,11 @@
 {% extends 'portfolio_base.html' %}
 {% load static field_helpers%}
 
-{% block title %}Organization name and mailing address | {{ portfolio.name }}{% endblock %}
+{% block title %}Organization overview | {{ portfolio }}{% endblock %}
 
-{% load static %}
-
-{% block portfolio_content %}
-<div class="grid-row grid-gap">
-    <div class="tablet:grid-col-3">
+{% block portfolio_organization_content %}
+<div class="grid-row grid-gap max-width--grid-container">
+    <div class="tablet:grid-col-3 grid-col--sidenav">
         <p class="font-body-md margin-top-0 margin-bottom-2
                     text-primary-darker text-semibold"
         >
@@ -17,63 +15,18 @@
         {% include 'portfolio_organization_sidebar.html' %}
     </div>
 
-    <div class="tablet:grid-col-9" id="main-content">
-        <!-- Form messages -->
-        {% include "includes/form_errors.html" with form=form %}
-        {% block messages %}
-          {% include "includes/form_messages.html" %}
-        {% endblock messages%}
-
-        <h1>Organization</h1>
-
-        <p>The name of your organization will be publicly listed as the domain registrant.</p>
-
-        {% if has_edit_portfolio_permission %}
-            <p>
-                Your organization name can’t be updated here.
-                To suggest an update, email <a href="mailto:help@get.gov" class="usa-link">help@get.gov</a>.
-            </p>
-
-            {% include "includes/required_fields.html" %}
-            <form class="usa-form usa-form--large desktop:margin-top-4" method="post" novalidate>
-                {% csrf_token %}
-                <h4 class="margin-bottom-05">Organization name</h4>
-                <p class="margin-top-0">
-                    {{ portfolio.federal_agency }}
-                </p>
-                {% input_with_errors form.address_line1 %}
-                {% input_with_errors form.address_line2 %}
-                {% input_with_errors form.city %}
-                {% input_with_errors form.state_territory %}
-                {% with add_class="usa-input--small" sublabel_text="Enter a 5-digit or 9-digit zip code, like 12345 or 12345-6789." %}
-                    {% input_with_errors form.zipcode %}
-                {% endwith %}
-                <button type="submit" class="usa-button">
-                Save
-                </button>
-            </form>
-        {% else %}
-            <h4 class="margin-bottom-05">Organization name</h4>
-            <p class="margin-top-0">
-                {{ portfolio.federal_agency }}
-            </p>
-            {% if form.address_line1.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.address_line1 %}
-            {% endif %}
-            {% if form.address_line2.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.address_line2 %}
-            {% endif %}
-            {% if form.city.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.city %}
-            {% endif %}
-            {% if form.state_territory.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.state_territory %}
-            {% endif %}
-            {% if form.zipcode.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.zipcode %}
-            {% endif %}
-        {% endif %}
-
-    </div>
+    <div class="tablet:grid-col" id="main-content">
+            <h1>Organization overview</h1>
+            <div class="margin-top-2 tablet:grid-col-10">
+                <h2 class="string-wrap margin-top-2">{{ portfolio }}</h2>
+                    {% url 'organization-info' as url %}
+                    {% include "includes/summary_item.html" with title='Organization' value=portfolio address='true' edit_link=url editable=has_edit_portfolio_permission view_button='true' portfolio_first_section='true'%}
+            
+                    {% url 'organization-senior-official' as url %}
+                    {% include "includes/summary_item.html" with title='Senior official' value=portfolio.senior_official contact='true' edit_link=url view_button='true' %}
+            </div>
+            
+    
+        </div>
 </div>
 {% endblock %}
diff --git a/src/registrar/templates/portfolio_organization_info.html b/src/registrar/templates/portfolio_organization_info.html
new file mode 100644
index 0000000000..546b06b83e
--- /dev/null
+++ b/src/registrar/templates/portfolio_organization_info.html
@@ -0,0 +1,92 @@
+{% extends 'portfolio_base.html' %}
+{% load static field_helpers%}
+
+{% block title %}Organization name and mailing address | {{ portfolio }}{% endblock %}
+
+{% load static %}
+
+{% block portfolio_organization_content %}
+<div class="grid-row grid-gap max-width--grid-container">
+    <div class="tablet:grid-col-3 grid-col--sidenav">
+        <p class="font-body-md margin-top-0 margin-bottom-2
+                    text-primary-darker text-semibold"
+        >
+            <span class="usa-sr-only"> Portfolio name:</span> {{ portfolio }}
+        </p>
+
+        {% include 'portfolio_organization_sidebar.html' %}
+    </div>
+
+    <div class="tablet:grid-col" id="main-content">
+        {% block breadcrumb %}
+        <!-- Navigation breadcrumbs -->
+        <nav class="usa-breadcrumb padding-top-0" aria-label="Portfolio organization breadcrumb">
+        <ol class="usa-breadcrumb__list">
+            <li class="usa-breadcrumb__list-item">
+            <a href="{% url 'organization' %}" class="usa-breadcrumb__link"><span>{{ portfolio }}</span></a>
+            </li>
+            <li class="usa-breadcrumb__list-item usa-current" aria-current="page">
+            <span>Organization</span>
+            </li>
+        </ol>
+        </nav>
+        {% endblock breadcrumb %}
+        <!-- Form messages -->
+        {% include "includes/form_errors.html" with form=form %}
+        {% block messages %}
+        {% include "includes/form_messages.html" %}
+        {% endblock messages%}
+
+        <h1>Organization</h1>
+        <div class="margin-top-2 tablet:grid-col-10">
+            <p>The name of your organization will be publicly listed as the domain registrant.</p>
+
+            {% if has_edit_portfolio_permission %}
+                <p>
+                    Your organization name can’t be updated here.
+                    To suggest an update, email <a href="mailto:help@get.gov" class="usa-link">help@get.gov</a>.
+                </p>
+    
+                {% include "includes/required_fields.html" %}
+                <form class="usa-form usa-form--large desktop:margin-top-4" method="post" novalidate>
+                    {% csrf_token %}
+                    <h4 class="margin-bottom-05">Organization name</h4>
+                    <p class="margin-top-0">
+                        {{ portfolio.federal_agency }}
+                    </p>
+                    {% input_with_errors form.address_line1 %}
+                    {% input_with_errors form.address_line2 %}
+                    {% input_with_errors form.city %}
+                    {% input_with_errors form.state_territory %}
+                    {% with add_class="usa-input--small" sublabel_text="Enter a 5-digit or 9-digit zip code, like 12345 or 12345-6789." %}
+                        {% input_with_errors form.zipcode %}
+                    {% endwith %}
+                    <button type="submit" class="usa-button">
+                    Save
+                    </button>
+                </form>
+            {% else %}
+                <h4 class="margin-bottom-05">Organization name</h4>
+                <p class="margin-top-0">
+                    {{ portfolio.federal_agency }}
+                </p>
+                {% if form.address_line1.value is not None %}
+                    {% include "includes/input_read_only.html" with field=form.address_line1 %}
+                {% endif %}
+                {% if form.address_line2.value is not None %}
+                    {% include "includes/input_read_only.html" with field=form.address_line2 %}
+                {% endif %}
+                {% if form.city.value is not None %}
+                    {% include "includes/input_read_only.html" with field=form.city %}
+                {% endif %}
+                {% if form.state_territory.value is not None %}
+                    {% include "includes/input_read_only.html" with field=form.state_territory %}
+                {% endif %}
+                {% if form.zipcode.value is not None %}
+                    {% include "includes/input_read_only.html" with field=form.zipcode %}
+                {% endif %}
+            {% endif %}
+        </div>
+    </div>
+</div>
+{% endblock %}
diff --git a/src/registrar/templates/portfolio_organization_sidebar.html b/src/registrar/templates/portfolio_organization_sidebar.html
index cfbb30e911..89fcf773b3 100644
--- a/src/registrar/templates/portfolio_organization_sidebar.html
+++ b/src/registrar/templates/portfolio_organization_sidebar.html
@@ -5,6 +5,15 @@
     <ul class="usa-sidenav">
       <li class="usa-sidenav__item">
         {% url 'organization' as url %} 
+        <a href="{{ url }}" 
+          {% if request.path == url %}class="usa-current"{% endif %}
+        >
+          Organization overview
+        </a>
+      </li>
+
+      <li class="usa-sidenav__item">
+        {% url 'organization-info' as url %} 
         <a href="{{ url }}" 
           {% if request.path == url %}class="usa-current"{% endif %}
         >
@@ -13,7 +22,7 @@
       </li>
 
       <li class="usa-sidenav__item">
-        {% url 'senior-official' as url %} 
+        {% url 'organization-senior-official' as url %} 
         <a href="{{ url }}"
         {% if request.path == url %}class="usa-current"{% endif %}
         >
diff --git a/src/registrar/templates/portfolio_senior_official.html b/src/registrar/templates/portfolio_senior_official.html
index d521c015b9..0b48befe26 100644
--- a/src/registrar/templates/portfolio_senior_official.html
+++ b/src/registrar/templates/portfolio_senior_official.html
@@ -5,10 +5,10 @@
 
 {% load static %}
 
-{% block portfolio_content %}
+{% block portfolio_organization_content %}
 
-<div class="grid-row grid-gap">
-    <div class="tablet:grid-col-3">
+<div class="grid-row grid-gap max-width--grid-container">
+    <div class="tablet:grid-col-3 grid-col--sidenav">
         <p class="font-body-md margin-top-0 margin-bottom-2
                     text-primary-darker text-semibold"
         >
@@ -19,6 +19,20 @@
     </div>
 
     <div class="tablet:grid-col-9" id="main-content">
+        {% block breadcrumb %}
+        <!-- Navigation breadcrumbs -->
+        <nav class="usa-breadcrumb padding-top-0" aria-label="Portfolio organization breadcrumb">
+        <ol class="usa-breadcrumb__list">
+            <li class="usa-breadcrumb__list-item">
+            <a href="{% url 'organization' %}" class="usa-breadcrumb__link"><span>{{ portfolio }}</span></a>
+            </li>
+            <li class="usa-breadcrumb__list-item usa-current" aria-current="page">
+            <span>Senior official</span>
+            </li>
+        </ol>
+        </nav>
+        {% endblock breadcrumb %}
+
         {% include "includes/senior_official.html" with can_edit=False %}
     </div>
 </div>
diff --git a/src/registrar/templatetags/custom_filters.py b/src/registrar/templatetags/custom_filters.py
index e02a29e73c..a2e7275574 100644
--- a/src/registrar/templatetags/custom_filters.py
+++ b/src/registrar/templatetags/custom_filters.py
@@ -241,7 +241,8 @@ def is_portfolio_subpage(path):
     # Since our pages aren't unified under a common path, we need this approach for now.
     url_names = [
         "organization",
-        "senior-official",
+        "organization-info",
+        "organization-senior-official",
     ]
     return get_url_name(path) in url_names
 
diff --git a/src/registrar/tests/test_views_portfolio.py b/src/registrar/tests/test_views_portfolio.py
index 81be0d3ade..40a9482f14 100644
--- a/src/registrar/tests/test_views_portfolio.py
+++ b/src/registrar/tests/test_views_portfolio.py
@@ -74,7 +74,7 @@ def test_portfolio_senior_official(self):
             additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO],
         )
 
-        so_portfolio_page = self.app.get(reverse("senior-official"))
+        so_portfolio_page = self.app.get(reverse("organization-senior-official"))
         # Assert that we're on the right page
         self.assertContains(so_portfolio_page, "Senior official")
         self.assertContains(so_portfolio_page, "Saturn Enceladus")
@@ -196,29 +196,119 @@ def test_portfolio_organization_page_403_when_user_not_have_permission(self):
             self.assertEqual(response.status_code, 403)
 
     @less_console_noise_decorator
-    def test_portfolio_organization_page_read_only(self):
-        """Test that user with a portfolio can access the portfolio organization page, read only"""
+    def test_portfolio_organization_page_includes_org_info_and_senior_official(self):
+        """Test that portfolio user on the organization overview page includes sections on the organization's
+        info and senior official"""
         self.app.set_user(self.user.username)
         portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
             user=self.user,
             portfolio=self.portfolio,
-            additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO],
+            additional_permissions=[
+                UserPortfolioPermissionChoices.VIEW_PORTFOLIO,
+                UserPortfolioPermissionChoices.EDIT_PORTFOLIO,
+            ],
         )
+        so = SeniorOfficial.objects.create(
+            first_name="Saturn", last_name="Enceladus", title="Planet/Moon", email="spacedivision@igorville.com"
+        )
+
+        self.portfolio.senior_official = so
+        self.portfolio.organization_name = "Hotel California"
         self.portfolio.city = "Los Angeles"
         self.portfolio.save()
+
         with override_flag("organization_feature", active=True):
+            # User can access organization info form via organization overview page
             response = self.app.get(reverse("organization"))
-            # Assert the response is a 200
             self.assertEqual(response.status_code, 200)
-            # The label for Federal agency will always be a h4
-            self.assertContains(response, '<h4 class="margin-bottom-05">Organization name</h4>')
-            # The read only label for city will be a h4
-            self.assertContains(response, '<h4 class="margin-bottom-05">City</h4>')
-            self.assertNotContains(response, 'for="id_city"')
-            self.assertContains(response, '<p class="margin-top-0">Los Angeles</p>')
+            # Organization overview page includes organization name
+            self.assertContains(response, "<h1>Organization overview</h1>")
+            self.assertContains(response, "Hotel California</h2>")
+            # Organization overview page includes organization info and senior official details
+            self.assertContains(response, "Los Angeles")
+            self.assertContains(response, "spacedivision@igorville.com")
+
+    @less_console_noise_decorator
+    def test_portfolio_organization_page_directs_to_org_detail_forms(self):
+        """Test that portfolio user on the organization overview page can click on the overview
+        sections to their respective forms"""
+        self.app.set_user(self.user.username)
+        portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
+            user=self.user,
+            portfolio=self.portfolio,
+            additional_permissions=[
+                UserPortfolioPermissionChoices.VIEW_PORTFOLIO,
+                UserPortfolioPermissionChoices.EDIT_PORTFOLIO,
+            ],
+        )
+        self.portfolio.save()
+
+        with override_flag("organization_feature", active=True):
+            # User can access organization info form via organization overview page
+            response = self.app.get(reverse("organization"))
+            # The overview page includes button to edit organization
+            org_info_url = reverse("organization-info")
+            org_senior_official_url = reverse("organization-senior-official")
+            self.assertContains(response, f'href="{org_info_url}"')
+            self.assertContains(response, f'href="{org_senior_official_url}"')
+
+    @less_console_noise_decorator
+    def test_portfolio_organization_page_section_viewonly_icon(self):
+        """Test organization page setion displays viewonly icon for portfolio nonadmin member"""
+        self.app.set_user(self.user.username)
+        portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
+            user=self.user,
+            portfolio=self.portfolio,
+            additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO],
+        )
+        self.portfolio.save()
+
+        with override_flag("organization_feature", active=True):
+            # User can access view-only form via organization overview page
+            org_overview_response = self.app.get(reverse("organization"))
+            # Viewonly icons for org info and senior official (which is always viewonly)
+            # visibility is html id of view only icon
+            self.assertContains(org_overview_response, "visibility", count=2)
 
     @less_console_noise_decorator
-    def test_portfolio_organization_page_edit_access(self):
+    def test_portfolio_organization_page_section_edit_icon(self):
+        """Test organization page setion displays viewonly icon for portfolio nonadmin member"""
+        self.app.set_user(self.user.username)
+        portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
+            user=self.user,
+            portfolio=self.portfolio,
+            additional_permissions=[UserPortfolioPermissionChoices.VIEW_PORTFOLIO],
+        )
+        self.portfolio.save()
+
+        with override_flag("organization_feature", active=True):
+            # User can access view-only form via organization overview page
+            org_overview_response = self.app.get(reverse("organization"))
+            # Viewonly icons for org info and senior official (which is always viewonly)
+            # visibility is html id of view only icon
+            self.assertContains(org_overview_response, "visibility", count=2)
+
+    @less_console_noise_decorator
+    def test_portfolio_organization_info_page_read_only(self):
+        """Test that user with a portfolio can access the portfolio organization page, read only"""
+        self.app.set_user(self.user.username)
+        portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
+            user=self.user,
+            portfolio=self.portfolio,
+            additional_permissions=[
+                UserPortfolioPermissionChoices.VIEW_PORTFOLIO,
+                UserPortfolioPermissionChoices.EDIT_PORTFOLIO,
+            ],
+        )
+        self.portfolio.save()
+        with override_flag("organization_feature", active=True):
+            # User can access view-only form via organization overview page
+            org_overview_response = self.app.get(reverse("organization"))
+            # Edit icons for org info (senior official is always viewonly)
+            self.assertContains(org_overview_response, "Edit")
+
+    @less_console_noise_decorator
+    def test_portfolio_organization_info_page_edit_access(self):
         """Test that user with a portfolio can access the portfolio organization page, read only"""
         self.app.set_user(self.user.username)
         portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
@@ -231,8 +321,10 @@ def test_portfolio_organization_page_edit_access(self):
         )
         self.portfolio.city = "Los Angeles"
         self.portfolio.save()
+
         with override_flag("organization_feature", active=True):
-            response = self.app.get(reverse("organization"))
+            # User can access editable form via organization info page
+            response = self.app.get(reverse("organization-info"))
             # Assert the response is a 200
             self.assertEqual(response.status_code, 200)
             # The label for Federal agency will always be a h4
@@ -242,6 +334,33 @@ def test_portfolio_organization_page_edit_access(self):
             self.assertNotContains(response, '<p class="margin-top-0">Los Angeles</p>')
             self.assertContains(response, 'for="id_city"')
 
+    @less_console_noise_decorator
+    def test_portfolio_organization_detail_pages_include_breadcrumb(self):
+        """Test that breadcrumb menus display on portfolio detail pages"""
+        self.app.set_user(self.user.username)
+        portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
+            user=self.user,
+            portfolio=self.portfolio,
+            additional_permissions=[
+                UserPortfolioPermissionChoices.VIEW_PORTFOLIO,
+                UserPortfolioPermissionChoices.EDIT_PORTFOLIO,
+            ],
+        )
+        self.portfolio.organization_name = "Hotel California"
+        self.portfolio.save()
+
+        with override_flag("organization_feature", active=True):
+            # Breadcrumb appears on organization info page
+            org_info_response = self.app.get(reverse("organization-info"))
+            self._assert_has_organization_breadcrumb(org_info_response)
+            so_response = self.app.get(reverse("organization-senior-official"))
+            self._assert_has_organization_breadcrumb(so_response)
+
+    def _assert_has_organization_breadcrumb(self, response):
+        self.assertContains(response, '<ol class="usa-breadcrumb__list">')
+        self.assertContains(response, "Hotel California")
+        self.assertContains(response, 'href="/organization/"')
+
     @less_console_noise_decorator
     @override_flag("organization_requests", active=True)
     def test_accessible_pages_when_user_does_not_have_permission(self):
@@ -285,7 +404,7 @@ def test_accessible_pages_when_user_does_not_have_permission(self):
             # The organization page should still be accessible
             org_page = self.app.get(reverse("organization"))
             self.assertContains(org_page, self.portfolio.organization_name)
-            self.assertContains(org_page, "<h1>Organization</h1>")
+            self.assertContains(org_page, "<h1>Organization overview</h1>")
 
             # Both domain pages should not be accessible
             domain_page = self.app.get(reverse("domains"), expect_errors=True)
@@ -332,7 +451,7 @@ def test_accessible_pages_when_user_does_not_have_role(self):
             # The organization page should still be accessible
             org_page = self.app.get(reverse("organization"))
             self.assertContains(org_page, self.portfolio.organization_name)
-            self.assertContains(org_page, "<h1>Organization</h1>")
+            self.assertContains(org_page, "<h1>Organization overview</h1>")
 
             # Both domain pages should not be accessible
             domain_page = self.app.get(reverse("domains"), expect_errors=True)
@@ -352,12 +471,12 @@ def test_portfolio_org_name(self):
             portfolio_permission, _ = UserPortfolioPermission.objects.get_or_create(
                 user=self.user, portfolio=self.portfolio, additional_permissions=portfolio_additional_permissions
             )
-            page = self.app.get(reverse("organization"))
+            page = self.app.get(reverse("organization-info"))
             self.assertContains(page, "The name of your organization will be publicly listed as the domain registrant.")
 
     @less_console_noise_decorator
-    def test_domain_org_name_address_content(self):
-        """Org name and address information appears on the page."""
+    def test_portfolio_org_info_includes_name_and_address(self):
+        """Org name and address appears on the org info page."""
         with override_flag("organization_feature", active=True):
             self.app.set_user(self.user.username)
             portfolio_additional_permissions = [
@@ -370,9 +489,9 @@ def test_domain_org_name_address_content(self):
 
             self.portfolio.organization_name = "Hotel California"
             self.portfolio.save()
-            page = self.app.get(reverse("organization"))
-            # Once in the sidenav, once in the main nav
-            self.assertContains(page, "Hotel California", count=2)
+            page = self.app.get(reverse("organization-info"))
+            # Org name in Sidenav, main nav, webpage title, and breadcrumb
+            self.assertContains(page, "Hotel California", count=4)
             self.assertContains(page, "Non-Federal Agency")
 
     @less_console_noise_decorator
@@ -390,7 +509,7 @@ def test_org_form_invalid_update(self):
 
             self.portfolio.address_line1 = "1600 Penn Ave"
             self.portfolio.save()
-            portfolio_org_name_page = self.app.get(reverse("organization"))
+            portfolio_org_name_page = self.app.get(reverse("organization-info"))
             session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
 
             portfolio_org_name_page.form["address_line1"] = "6 Downing st"
@@ -419,7 +538,7 @@ def test_org_form_valid_update(self):
 
             self.portfolio.address_line1 = "1600 Penn Ave"
             self.portfolio.save()
-            portfolio_org_name_page = self.app.get(reverse("organization"))
+            portfolio_org_name_page = self.app.get(reverse("organization-info"))
             session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
 
             # Form validates and redirects with all required fields
@@ -458,7 +577,7 @@ def test_org_update_sends_admin_email(self, mock_send_organization_update_email)
 
             self.portfolio.address_line1 = "1600 Penn Ave"
             self.portfolio.save()
-            portfolio_org_name_page = self.app.get(reverse("organization"))
+            portfolio_org_name_page = self.app.get(reverse("organization-info"))
             session_id = self.app.cookies[settings.SESSION_COOKIE_NAME]
             portfolio_org_name_page.form["address_line1"] = "6 Downing st"
             portfolio_org_name_page.form["city"] = "London"
diff --git a/src/registrar/views/portfolios.py b/src/registrar/views/portfolios.py
index fe80953355..008f60e514 100644
--- a/src/registrar/views/portfolios.py
+++ b/src/registrar/views/portfolios.py
@@ -890,13 +890,43 @@ def get_context_data(self, **kwargs):
 
 
 @grant_access(IS_PORTFOLIO_MEMBER)
-class PortfolioOrganizationView(DetailView, FormMixin):
+class PortfolioOrganizationView(DetailView):
     """
-    View to handle displaying and updating the portfolio's organization details.
+    View to handle displaying and updating overview of portfolio's information.
     """
 
     model = Portfolio
     template_name = "portfolio_organization.html"
+    context_object_name = "portfolio"
+
+    def get_context_data(self, **kwargs):
+        """Add additional context data to the template."""
+        context = super().get_context_data(**kwargs)
+        portfolio = self.request.session.get("portfolio")
+        context["has_edit_portfolio_permission"] = self.request.user.has_edit_portfolio_permission(portfolio)
+        return context
+
+    def get_object(self, queryset=None):
+        """Get the portfolio object based on the session."""
+        portfolio = self.request.session.get("portfolio")
+        if portfolio is None:
+            raise Http404("No organization found for this user")
+        return portfolio
+
+    def get(self, request, *args, **kwargs):
+        self.object = self.get_object()
+        context = self.get_context_data(object=self.object)
+        return self.render_to_response(context)
+
+
+@grant_access(IS_PORTFOLIO_MEMBER)
+class PortfolioOrganizationInfoView(DetailView, FormMixin):
+    """
+    View to handle displaying and updating the portfolio's organization details.
+    """
+
+    model = Portfolio
+    template_name = "portfolio_organization_info.html"
     form_class = portfolioForms.PortfolioOrgAddressForm
     context_object_name = "portfolio"
 


Reviews:
user: login: erinysong
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-16T00:09:15Z
user: login: therealslimhsiehdy
body: **From admin view with ability to edit:**
<img width="901" alt="screenshot img 2025-05-19 at 11 24 00 AM" src="https://github.com/user-attachments/assets/742acdd5-cf8b-4d36-9398-b4d56f332b6b" />
**Unable to edit senior official as expected:**
<img width="850" alt="screenshot img 2025-05-19 at 11 29 00 AM" src="https://github.com/user-attachments/assets/3fc25311-556e-4ea0-93aa-27792b5e582c" />
**Overall view with a senior official filled in:**
<img width="1431" alt="screenshot img 2025-05-19 at 11 29 15 AM" src="https://github.com/user-attachments/assets/5d23045f-69d0-4b23-af59-3f4d3a8e9d68" />
**I didn't screenshot everything, but went through and tested that we get the right success and fail errors:**
<img width="936" alt="screenshot img 2025-05-19 at 11 30 49 AM" src="https://github.com/user-attachments/assets/7ea9813f-7b28-4f56-8156-4ff4a4215cb8" />
**Confirmed breadcrumbs looking great:**
<img width="892" alt="screenshot img 2025-05-19 at 11 30 59 AM" src="https://github.com/user-attachments/assets/a38e5f61-7a28-462c-9b8b-37bfc0a92ddd" />
**Confirmed limited view only allows view of the organization in the overview page and the organization main page (and breadcrumb looks great):**
<img width="901" alt="screenshot img 2025-05-19 at 11 39 29 AM" src="https://github.com/user-attachments/assets/5ba0cc55-8e5b-4a27-b9a2-02f15abe86a6" />
<img width="980" alt="screenshot img 2025-05-19 at 11 38 30 AM" src="https://github.com/user-attachments/assets/f4146765-1e45-406e-ab57-0e6c59335237" />

Code looks good (will do another thorough pass again, and the tests are very thorough!

My only feedback/question is that I see in Figma that we don't have the Portfolio displayed in the Organization Overview view, but we do display it (ie `CISA`, or see first screenshot where it's `Hotel California`). Should that be removed or kept?



state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-19T19:01:45Z
user: login: therealslimhsiehdy
body: Did another dive of the code and re-tested a few things -- LGTM (please see previous comments for screenshots)! I'll leave it to design's magical hands now.

Thank you also for explaining the "Non-Federal Agency" display for the Organization Name case!
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T18:48:19Z
user: login: erinysong
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T21:53:35Z
user: login: erinysong
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-20T21:55:43Z
user: login: erinysong
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T21:14:23Z
user: login: erinysong
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T21:15:36Z
user: login: gabo0oo
body: Looks great, thanks Erin!
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-05-27T23:28:44Z

Review comments:
diff_hunk: @@ -1,9 +1,7 @@
 {% extends 'portfolio_base.html' %}
 {% load static field_helpers%}
 
-{% block title %}Organization name and mailing address | {{ portfolio.name }}{% endblock %}
-
-{% load static %}
+{% block title %}Organization overview | {{ portfolio }}{% endblock %}
path: src/registrar/templates/portfolio_organization.html
user: login: erinysong
body: This title previously was not displaying portfolio name correctly so added a quickfix
created_at: 2025-05-16T00:09:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -7,6 +7,9 @@
         <main class="grid-container grid-container--widescreen">
             {% if user.is_authenticated %}
             {# the entire logged in page goes here #}
+
+            {# portfolio organization page layout #}
path: src/registrar/templates/portfolio_base.html
user: login: erinysong
body: Add a new block to input portfolio page content which is formatted slightly differently from our tables grid layout
created_at: 2025-05-20T21:53:35Z
author_association: CONTRIBUTOR
diff_hunk: @@ -17,63 +15,17 @@
         {% include 'portfolio_organization_sidebar.html' %}
     </div>
 
-    <div class="tablet:grid-col-9" id="main-content">
-        <!-- Form messages -->
-        {% include "includes/form_errors.html" with form=form %}
-        {% block messages %}
-          {% include "includes/form_messages.html" %}
-        {% endblock messages%}
-
-        <h1>Organization</h1>
-
-        <p>The name of your organization will be publicly listed as the domain registrant.</p>
-
-        {% if has_edit_portfolio_permission %}
-            <p>
-                Your organization name can’t be updated here.
-                To suggest an update, email <a href="mailto:help@get.gov" class="usa-link">help@get.gov</a>.
-            </p>
-
-            {% include "includes/required_fields.html" %}
-            <form class="usa-form usa-form--large desktop:margin-top-4" method="post" novalidate>
-                {% csrf_token %}
-                <h4 class="margin-bottom-05">Organization name</h4>
-                <p class="margin-top-0">
-                    {{ portfolio.federal_agency }}
-                </p>
-                {% input_with_errors form.address_line1 %}
-                {% input_with_errors form.address_line2 %}
-                {% input_with_errors form.city %}
-                {% input_with_errors form.state_territory %}
-                {% with add_class="usa-input--small" sublabel_text="Enter a 5-digit or 9-digit zip code, like 12345 or 12345-6789." %}
-                    {% input_with_errors form.zipcode %}
-                {% endwith %}
-                <button type="submit" class="usa-button">
-                Save
-                </button>
-            </form>
-        {% else %}
-            <h4 class="margin-bottom-05">Organization name</h4>
-            <p class="margin-top-0">
-                {{ portfolio.federal_agency }}
-            </p>
-            {% if form.address_line1.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.address_line1 %}
-            {% endif %}
-            {% if form.address_line2.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.address_line2 %}
-            {% endif %}
-            {% if form.city.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.city %}
-            {% endif %}
-            {% if form.state_territory.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.state_territory %}
-            {% endif %}
-            {% if form.zipcode.value is not None %}
-                {% include "includes/input_read_only.html" with field=form.zipcode %}
-            {% endif %}
-        {% endif %}
-
+    <div class="tablet:grid-col">
+        <main id="main-content" class="grid-container">
path: src/registrar/templates/portfolio_organization.html
user: login: erinysong
body: Refactor to match formatting of our domains and domain request overview pages
created_at: 2025-05-20T21:55:43Z
author_association: CONTRIBUTOR
diff_hunk: @@ -21,8 +21,7 @@
       {% endif %}
     </div>
 
-    <div class="tablet:grid-col">
-      <main id="main-content" class="grid-container">
+    <div class="tablet:grid-col" id="main-content">
path: src/registrar/templates/domain_base.html
user: login: erinysong
body: Change markdown layout so domain summary and org summary pages are consistent width
created_at: 2025-05-27T21:14:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -2,5 +2,5 @@
     {{ contact.get_formatted_name }}<br />
     {% if  contact.title  %}{{ contact.title }}<br />{% endif %}
     {% if  contact.email  %}{{ contact.email }}<br />{% endif %}
-    {% if  contact.phone  %}{{ contact.phone.as_national }}{% endif %}
+    {% if not portfolio and contact.phone  %}{{ contact.phone.as_national }}{% endif %}
path: src/registrar/templates/includes/contact.html
user: login: erinysong
body: Exclude phone from contact summaries in portfolio to maximize privacy
created_at: 2025-05-27T21:15:36Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-05-15T20:36:57Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-15T20:39:26Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-15T20:54:47Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-15T22:12:25Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-15T22:45:52Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-15T23:18:01Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T00:09:48Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T00:12:57Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T00:18:13Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T17:27:07Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T18:20:23Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T18:21:18Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T18:24:48Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-16T22:10:22Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: gabo0oo
created_at: 2025-05-19T19:58:57Z
body: 🔄 Can you remove the phone number for Senior official from appearing on the Organization overview page ?
author_association: CONTRIBUTOR
user: login: gabo0oo
created_at: 2025-05-19T21:18:49Z
body: @erinysong On the Organization overview page:
- Change the margin between the H1 and H2 to 16 instead of 32 (can you please change this on Domain overview pages as well (both org and non-org)
- Between H2 and the summary section below, can you change that margin to 16 as well? (only on the org overview page).
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-19T21:52:10Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-19T22:11:30Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: erinysong
created_at: 2025-05-19T22:19:41Z
body: @therealslimhsiehdy design and I decided to remove the federal agency name of an org in this page fysa!
author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-19T22:23:31Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: gabo0oo
created_at: 2025-05-20T16:20:48Z
body: Looking good Erin! A couple more things
1. The padding between the sidebar column and the main content column differs between the Organization pages and the Domain and Domain request pages. On the Domain and Domain request pages, they have a 32 left padding on main content grid container, while on the Organization pages there is 16 left padding on "tablet:grid-col-9 main-content". We also use these two different types of structures, so I'm not sure if you want to go with one style or the other. Either way, can we have those match so there is a left padding of 16? So between the two columns would be 32px total (right padding of the side bar + left padding of the main column).
2. The side bar size is also different if you're on the Organization page vs the Domain/Domain request pages. Can we make the Organization sidebar match the Domain and Domain request sidebars? See screenshots for comparisons.

Organization pages
<img width="342" alt="Screenshot 2025-05-20 at 9 07 31 AM" src="https://github.com/user-attachments/assets/18b1df22-3424-4174-90d0-20c8e88d3218" />

Domains pages
<img width="339" alt="Screenshot 2025-05-20 at 9 07 41 AM" src="https://github.com/user-attachments/assets/ad7aae22-d3d5-404f-b1e1-ff87dc6c75b4" />

Domain requests
<img width="339" alt="Screenshot 2025-05-20 at 9 13 58 AM" src="https://github.com/user-attachments/assets/564ed9bb-752f-4904-ac03-e0e09ee4b0e0" />

author_association: CONTRIBUTOR
user: login: github-actions[bot]
created_at: 2025-05-20T21:37:52Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-20T22:34:21Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-20T22:36:44Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-22T21:00:53Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-22T21:09:37Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-22T21:46:32Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-22T21:51:34Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-27T19:10:31Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-27T19:17:41Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE
user: login: github-actions[bot]
created_at: 2025-05-27T21:18:05Z
body: 🥳 Successfully deployed to developer sandbox **[es](https://getgov-es.app.cloud.gov/)**.
author_association: NONE