ul#program-tab {
    background: #f0f0f0;
    margin: 0px 0 0 0;
    padding-bottom: 0px;
    display: flex;
    border-radius: 0px 0px 10px 10px;
    justify-content: center
}
.tab-content {
	margin-top: 20px;
}
.search-bg {background: #f3f3f3;margin: 10px;padding: 20px 0px;border-radius: 15px;}
.details {margin: 10px 0px;border: none;}
.details table p {
	margin: 0px;
	padding: 0px;
}
 .details table {
	 border: 1px solid #e9e9e9;
	 margin-bottom: 30px;
 }
.details table tr td, .details table tbody {
	font-size: 16px;
	border: none !important;
	line-height: 2.5rem;
	padding: 6px 15px
}
.details p {
margin: 0px;
}
p.time.description {
    color: #999;
    font-size: 12px;
    margin-top: -10px;
    font-style: italic;
}
.dp-wrap .college-department p {
display: block;
padding: 5px 0px;
margin: 0px;
line-height: 15px;
color: #717171;
margin-top: 0px;
font-size: 12px;
border-radius: 5px;
}
.dp-title h3 a {color: #003da5;font-weight: 600;display: flex;font-size: 22px;width: 100%;}
.program-excerpt {font-size: 16px;}
.f-nav {
position: fixed;
top: 100px;
margin-bottom: 500px;
}
.dp-thumbnail {float: left;margin: 4px 15px 15px 0px;width: 226px;}
.dp-thumbnail img {border: 0px;padding: 0px;border-radius: 10px;}
.dp-wrap {
  clear: both;
  padding: 20px 0px;
  min-height: 230px;
  border-bottom: 1px solid #e9e9e9;
}
.dp-title h3 {margin-bottom: 7px;margin-top: 0px;}
.single-program .entry-content { padding-right: 0px; margin-right: 0px; }
.single-program li.gfield { margin: 0px !important;}
.single-program .gform_body input { padding: 3px !important;}
span.delivery {
margin-bottom: 10px;
}
.wp-pagenavi span.current {
	background: #003da5 !important;
	color: #fff !important; 
	border-radius: 30px
}
.wp-pagenavi a, .wp-pagenavi a:link, .wp-pagenavi a:visited, .wp-pagenavi span.current {
	border: none !important; 
	border-radius: 8px;
	background: #f3f3f3;
}
.nav-link i {
	margin-right: 8px;
				   }
.nav-link.active i {
	margin-right: 8px;
	color: #FAD200 !important;
				   }
.sue-testimonial-has-photo {
  padding-left: 110px !important;
}
.sue-testimonial-has-photo img.sue-testimonial-photo {
  width: 90px !important;
  height: 90px !important;
  }
div.details span {
font-weight: bold;
color: #676767;
display: block;
}
span.college-department p {
margin: 0px;
display: inline-block;
}
.pills .graduate {
    background: #CECECE;
    color: #666;
    border: #b4b4b4;
}
section#execphp-4 li {
list-style: disc inside;
margin-left: 20px;
}
.program-head img:hover {
opacity: .7;
transition: all ease .5s;
}
article.program h1.entry-title {
margin-bottom: 0px;
border-bottom: 0px;
}
article.program h1.entry-title { display: none;}
.tabbable-line.tabs-below {padding: 0px 20px;margin-top: 5px;}
ul.nav-tabs li a {
text-transform: uppercase;
font-weight: 600;
font-size: 1.5rem;
}
#about h3 {
    color: #003087 !important;
    border-bottom: 1px solid #e9e9e9;
    padding: 10px;
}
#about #learning-goals h3 {
    padding: 0px;
    border: 0px;
}
#careers .sue-content-slider {
    background: #f9f9f9;
    padding: 32px;
    border: 1px solid #E8E8EA;
}
/* Tabs panel */
.tabbable-panel {clear: both;}
/* Default mode */
.tabbable-line > .nav-tabs {
  border: none;
  margin: 0px;
  cursor: pointer;
}
.tabbable-line > .nav-tabs > li {
    margin: 0px;
    list-style: none;
	transition: all .3s ease;
}
ul.nav>li>a {position: relative;display: flex;padding: 7px 16px !important;text-transform: none;background: #d8d8d8;margin: 9px;border-radius: 20px !important;font-size: 1.4rem;}
.tabbable-line > .nav-tabs > li > a {
  border: 0;
  /* margin-right: 0; */
  color: #616161;
}
.tabbable-line > .nav-tabs > li > a > i {
  color: #a6a6a6;
}

.tabbable-line > .nav-tabs > li.active > a, .nav-tabs .nav-link.active, .tabbable-line > .nav-tabs > li:hover > a {
  color: #fff !important;
	background: #003da5 !important;
	transition: all .3s ease;
}
.nav-tabs>li.active>a, .nav-tabs>li.active>a:hover, .nav-tabs>li.active>a:focus {
border: 0px !important;
}
.tabbable-line > .nav-tabs > li.open > a > i, .tabbable-line > .nav-tabs > li:hover > a > i {
  color: #a6a6a6;
}
.tabbable-line > .nav-tabs > li.open .dropdown-menu, .tabbable-line > .nav-tabs > li:hover .dropdown-menu {
  margin-top: 0px;
}
.tabbable-line > .nav-tabs > li.active {
  position: relative;
}
.tabbable-line > .nav-tabs > li.active > a {
  border: 0;
  color: #FFF;
  background: #003087;
}
.tabbable-line > .nav-tabs > li.active > a > i, .tabbable-line > .nav-tabs > li:hover > a > i {color: #FAC000;}
.tabbable-line > .tab-content {
  margin-top: -3px;
  background-color: #fff;
  border: 0;
  padding: 15px 0;
}
.portlet .tabbable-line > .tab-content {
  padding-bottom: 0;
}
.program-head img {
width: 100%;
opacity: 1;
z-index: 1;
position: relative;
border-radius: 10px;
}
div#learning-goals {
    margin-top: 30px;
    padding-left: 4%;
    padding-right: 4%;
}
#program-footer {
    padding: 20px 35px;
    background-color: #f8f8f8;
    display: flex;
    align-items: center;
    justify-content: center;
}
.chosen-container {
  max-width: 226px;
}
article.program {
margin-top: 13px;
}
.program-head {
overflow: hidden;
max-height: 270px;
}
.program-title {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 270px;
    margin-bottom: -270px;
    z-index: 9;
    position: relative;
    font-size: 31px;
    color: #FFF;
    padding: 0px 58px;
    background: rgba(0, 48, 135, 0.5);
    text-align: center;
	border-radius: 10px 10px 0px 0px;
}
.program-title span {
    background: rgba(0, 19, 53, 0.85);
    padding: 0px 20px;
	border-radius: 10px;
}
button.delivery a {
color: #f9f9f9;
}
a.more-link {
display: none;
}
.pagination {
    float: right;
    text-align: right;
    margin-bottom: -20px;
    margin-top: 0px;
    display: block;
}

@media (max-width: 1023px) {
.dp-excerpt {
  margin-left: 44%;
}
}
@media (max-width: 800px) {
.tabbable-line > .nav-tabs > li {
width: 100%;
text-align: center;
}
.dp-excerpt {
  float: left;
  margin-left: 0px;
  margin-bottom: 15px;
  border-bottom: 1px solid #e9e9e9;
  padding-bottom: 10px;
}
}
@media (max-width: 550px) {
	.program-title span {
    margin-top: 20px;
}

.program-title {
    width: 100%;
    padding: 0px;
    align-items: flex-start;
    font-size: 20px;
}
.tabbable-line.tabs-below {
    padding: 0px;
}
.col-md-4 {
  padding: 0px;
}
.dp-title h3 {
margin-top: 25px;
}
.search-bg {
  background: #FFF;
  margin: 0px;
  padding-top: 10px;
}
.searchandfilter ul {
  margin-left: 15px;
}
.dp-wrap .college-department p {
  margin-left: 0px;
  }
  .dp-excerpt p {
  margin-left: 0px;
}
.dp-thumbnail {
  float: none;
  text-align: center;
  width: 100%;
  margin: 0px 0px 12px 0px;
}
}
.proglist ul.list {
    width: 100%;
    text-align: center;
    margin: 0;
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-around;
}
.proglist li {
    list-style: none;
    height: 270px;
    margin: 0;
    width: 31%;
    max-width: 385px;
    min-width: 275px;
    margin-bottom: 12px;
    overflow: hidden;
    box-shadow: 0 -5px 7px #e7e7e7ab;
    transition: ease all .5s;
    border-radius: 10px
}

.proglist li:hover {
    box-shadow: 0 -4px 5px #d6d6d6;
    transition: ease all .5s;
    opacity: .9
}

/* Specificity floor for the tile <li>.
   These rules used to be #proglist-scoped (1,0,1), which beat the themes'
   ".entry-content ul li" / ".elementor-container ul li" (0,1,2). Moving the
   hook to a class drops them to (0,1,1) and those theme rules would win,
   putting a disc marker and a 5px margin on every tile. Re-assert just the two
   declarations that lose, at (0,3,2). Deliberately scoped to li.item and not to
   a bare li: a bare-li repair would outrank ".proglist li.plain-list" (0,2,1)
   and strip the list view's own marker and indent. Verified by diffing computed
   styles on all 13 sampled pages at 1280px and 480px -- zero change. */
.proglist ul.list > li.item {
    list-style: none;
    margin: 0 0 12px;
}

@media (max-width: 700px) {
    .proglist ul.list > li.item {
        margin: 10px 0;
    }
}

.proglist .prog-title .photo {
    width: 100%;
    height: 160px;
    background-size: cover;
    display: flex;
}

.proglist .prog-title a {
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: end;
    transition: all ease .5s
}

.proglist .prog-title .title {
    color: #f2f2f2;
    background: #003da5;
    text-align: center;
    padding: 10px;
    line-height: 19px;
    font-size: 17px;
    font-weight: 600;
    width: 100%;
    margin-top: auto;
}

.more-info {
    transition: all ease .5s;
    background: #fff;
    padding: 10px 20px;
    border-radius: 0px 0px 20px 20px;
    z-index: 1;
    position: relative;
    height: auto;
    width: auto;
    color: #555;
    font-size: 14px;
    text-align: left
}
.more-info span {
	font-weight: 700;
	line-height: 3px;
	display: inline-block;
	padding-right: 4px; 
}
.more-info p {
	padding-top: 9px;
}

.proglist li.plain-list,.proglist.switch-view li.item {
    display: none;
}

.proglist.switch-view li.plain-list {
    display:list-item;
    overflow: visible;
    height: auto;
    box-shadow: none;
    line-height: 18px;
    min-width: 340px;
    width: 36%;
    max-width: 600px;
}
.proglist.switch-view .plain-list {
     display: flex;
     width: 100%;
}

.proglist li.plain-list {
    text-align: left;
    list-style: disc;
    margin: 5px 2px;
    float: left;
    padding-left: 11px;
    margin-left: 30px;
}
.proglist li.plain-list a {
    font-size: 17px;
    line-height: 20px;
}

div#contact-filter,
.proglist .contact-filter {
    margin: 0 auto !important;
    text-align: center;
    width: 100%;
    display: block !important;
	padding-bottom: 20px;
}

.proglist input { 
    padding: 7px 14px;
    border: solid 1px #e4e4e4;
    max-width: 400px;
    width: 100%;
    box-sizing: border-box;
    color: #717171;
    margin-bottom: 5px;
    margin-right: 20px;
    margin-top: 16px;
    border-radius: 30px
}

.proglist input:focus {
    outline: none;
    border-color: #aaa
}

.proglist .search-button {
    font-size: 13px;
    padding: 5px 15px;
    border: none;
    display: inline-block;
    color: #888;
    text-decoration: none;
    font-weight: 700;
    margin: 2px 0;
    text-transform: uppercase;
    margin-left: 10px
}

.proglist .search-button:hover {
    text-decoration: none;
    cursor: pointer;
    color: #666
}

.annotated-list .search-button:focus {
    outline: none
}

span.switch.search-button:after {
    font-size: 20px;
  position: absolute;
    margin-top: -6px;
    margin-left: 6px;
    font-family: bootstrap-icons;  
  font-style: normal;
  margin-right: 0px;
    color: #000000;
  content: "\F478";
  display: inline-block;
  }

span.switch.search-button.grid:after {
    content: '\F3FB';
    color: #333;
}

.proglist .sort:after {
    width: 0;
    height: 0;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 6px solid transparent;
    content: "";
    position: relative;
    top: -12px;
    left: 8px;
    line-height: 27px;
    vertical-align: middle
}

.proglist .sort.asc:after {
    width: 0;
    height: 0;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-top: 6px solid #777;
    content: "";
    position: relative;
    top: 10px;
    line-height: 27px;
    left: 8px
}

.proglist .sort.desc:after {
    width: 0;
    height: 0;
    border-left: 6px solid transparent;
    border-right: 6px solid transparent;
    border-bottom: 6px solid #777;
    content: "";
    position: relative;
    top: -12px;
    left: 8px
}

@media (max-width: 700px) {
    .proglist li {
        display:inline-block;
        list-style: none;
        max-width: 475px;
        margin: 10px 0;
        overflow: hidden
    }

    .program-title span {
        margin-top: 20px
    }

    ul#program-tab {
        padding: 10px;
        border-radius: 10px
    }

    ul.nav>li>a {
        position: relative;
        display: block;
        padding: 7px 16px!important;
        text-transform: none;
        background: #d8d8d8;
        margin: 4px 9px;
        border-radius: 20px;
        font-size: 1.4rem
    }

    .program-title {
        width: 100%;
        padding: 0;
        align-items: flex-start;
        font-size: 20px
    }

    .tabbable-line.tabs-below {
        padding: 0
    }
}

/* ============================================================
   List view: index-style columns
   ------------------------------------------------------------
   The list view laid programs out with flexbox -- justify-content:
   space-around on the <ul>, and 36%-wide items with a 340px floor -- which
   put two programs per row in a sea of gap, and let one long program name
   set the height of everything beside it.

   Multi-column flow instead: each entry takes only the height it needs,
   there are no rows to pad, and reading down a column then across is how
   an index scans.

   Scoped to .switch-view throughout, so the photo-tile grid view is
   untouched. Applies both to list="true" and to a visitor pressing
   Switch View on a filterable grid.
   ============================================================ */

/* column-width, not a bare column-count: a fixed count divides whatever space
   is available regardless of how narrow it is, which is what let three columns
   on a page with a wide sidebar (e.g. /cs/) shrink to ~140px each and wrap
   "Cyber Security and Privacy" across five lines. column-width is a MINIMUM --
   the browser only adds a column once there is room for one at 250px, and
   column-count here caps it so a very wide embed does not run past four. */
.proglist.switch-view ul.list {
    display: block;
    column-width: 250px;
    column-count: 4;
    column-gap: 10px;
    text-align: left;
    margin: 0;
    padding: 0;
}

.proglist.switch-view ul.list li.plain-list {
    /* list-item, not block: a block box suppresses the disc marker entirely. */
    display: list-item;
    /* Marker outside the content box, so a wrapped program name hangs under the
       text rather than under the disc. The margin-left below is what gives the
       marker room inside the column -- without it an outside marker renders in
       the column gap and can clip at a column edge. */
    list-style: disc outside;
    float: none;
    width: auto;
    min-width: 0;
    max-width: none;
    height: auto;
    /* Row rhythm lives here rather than on the anchor, because the anchor has
       to stay inline for the marker and the text to share a line. */
    margin: 0 0 0 15px;
    padding: 2px 0;
    font-size: 18px;
    line-height: 1.45;
    overflow: visible;
    box-shadow: none;
    border-radius: 0;
    /* never split a wrapped program name across two columns */
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
    page-break-inside: avoid;
}

/* The grid tiles lift on hover; a text row in a list should not. */
.proglist.switch-view ul.list li.plain-list:hover {
    box-shadow: none;
    opacity: 1;
}

/* Colour and hover deliberately left to the theme's own link styling. */
.proglist.switch-view ul.list li.plain-list a.prog-title {
    display: inline;
    padding: 0;
    font-size: inherit;
    line-height: inherit;
    font-weight: 400;
}

/* column-width already collapses to fewer columns as the container narrows,
   so these breakpoints only needed to lower the CEILING for the phone case,
   where two 250px-minimum columns would otherwise overflow a ~350px viewport
   before column-width gets a chance to react. */
@media only screen and (max-width: 640px) {
    .proglist.switch-view ul.list {
        column-count: 1;
    }
}

@media print {
    .proglist.switch-view ul.list {
        column-count: 2;
    }
}

/* ==========================================================================
   Faceted filter rail -- rendered when the shortcode is given facets="..."
   Everything here is scoped to .proglist.has-facets or to classes that only
   exist inside the rail, so embeds without facets are untouched.
   ========================================================================== */

.proglist.has-facets .proglist-layout {
    display: flex;
    /* flex-start matters twice: it keeps the rail from stretching to the full
       row height, which is also what allows position:sticky to take effect. */
    align-items: flex-start;
    gap: 28px;
}

.proglist .proglist-facets {
    flex: 0 0 288px;
    box-sizing: border-box;
    text-align: left;
    font-size: 15px;
    /* Angled rather than vertical so the panel does not read as a flat slab
       beside the hero; ends dark enough to keep the gold headings legible while
       staying in the SAU blue family. */
    background: linear-gradient(155deg, #003da5 0%, #002a70 100%);
    color: #fff;
    padding: 24px 22px;
    border-radius: 8px;
}

.proglist .proglist-results {
    flex: 1 1 auto;
    /* Without this the flex item refuses to shrink below the tile grid's
       min-width and the rail gets squeezed instead. */
    min-width: 0;
}

.proglist .facet-bar-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    padding-bottom: 12px;
    margin-bottom: 18px;
    border-bottom: solid 2px rgba(255, 255, 255, .28);
}

/* display:flex on .facet-bar-head would otherwise beat the hidden attribute. */
.proglist .facet-bar-head[hidden] {
    display: none;
}

.proglist .facet-clear,
.proglist .facet-clear-inline {
    background: none;
    border: none;
    padding: 0;
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    color: #888;
    cursor: pointer;
}

.proglist .facet-clear:hover,
.proglist .facet-clear-inline:hover {
    color: #666;
    text-decoration: underline;
}

.proglist .proglist-facets .facet-clear {
    color: rgba(255, 255, 255, .78);
}

.proglist .proglist-facets .facet-clear:hover {
    color: #fad200;
}

.proglist .facet-group {
    margin-bottom: 26px;
}

.proglist .facet-group:last-child {
    margin-bottom: 0;
}

.proglist .facet-legend {
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: #fad200;
    margin: 0 0 12px;
    padding: 0;
}

.proglist .facet-option {
    display: flex;
    align-items: baseline;
    gap: 9px;
    margin: 0 0 9px;
    line-height: 1.35;
    cursor: pointer;
    color: #fff;
}

/* Tints the native checkbox gold instead of the browser default blue, which
   all but disappears against the panel. */
.proglist .facet-option input[type="checkbox"] {
    accent-color: #fad200;
}

/* ".proglist input" styles the keyword box as a full-width rounded pill, which
   the checkboxes inherit and are destroyed by. Opt them back out explicitly. */
.proglist .facet-option input[type="checkbox"] {
    width: auto;
    max-width: none;
    min-width: 0;
    margin: 0;
    padding: 0;
    border: none;
    border-radius: 0;
    flex: 0 0 auto;
    position: relative;
    top: 1px;
}

.proglist .facet-name {
    flex: 1 1 auto;
}

/* Child departments sit indented under their college. The rule is written
   against depth rather than a nesting level in the markup so the options stay a
   flat list -- simpler to style, and the checkboxes keep a single tab order. */
/* Each option is a row: a fixed gutter on the left holds the disclosure
   toggle, so options with and without children still line up. */
.proglist .facet-row {
    display: flex;
    align-items: baseline;
}

.proglist .facet-row[hidden] {
    display: none;
}

.proglist .facet-row.facet-depth-1 {
    margin-left: 19px;
}

.proglist .facet-row.facet-depth-2 {
    margin-left: 38px;
}

.proglist .facet-row .facet-option {
    flex: 1 1 auto;
    min-width: 0;
}

.proglist .facet-subtoggle {
    margin: 10px 0 0;
    padding: 0;
    background: none;
    border: none;
    color: rgba(255, 255, 255, .78);
    font-size: 12px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    cursor: pointer;
}

.proglist .facet-subtoggle:hover {
    color: #fad200;
    text-decoration: underline;
}

/* #proglist input styling would turn this into the big rounded keyword pill. */
.proglist input[type="search"].facet-search {
    width: 100%;
    max-width: none;
    margin: 0 0 10px;
    padding: 6px 11px;
    font-size: 13px;
    color: #fff;
    background: rgba(0, 0, 0, .18);
    border: solid 1px rgba(255, 255, 255, .25);
    border-radius: 4px;
    box-sizing: border-box;
}

.proglist input[type="search"].facet-search::placeholder {
    color: rgba(255, 255, 255, .55);
}

.proglist input[type="search"].facet-search:focus {
    outline: none;
    border-color: #fad200;
}

.proglist .screen-reader-text {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(1px, 1px, 1px, 1px);
    white-space: nowrap;
}

.proglist .facet-row.facet-empty {
    opacity: .45;
}

.proglist .facet-n {
    color: rgba(255, 255, 255, .62);
    font-size: 13px;
    flex: 0 0 auto;
}

.proglist .proglist-more {
    display: block;
    width: 100%;
    margin: 26px 0 0;
    padding: 13px 20px;
    background: #fff;
    border: solid 2px #003da5;
    border-radius: 30px;
    color: #003da5;
    font-size: 14px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    cursor: pointer;
    transition: background .15s ease, color .15s ease;
}

.proglist .proglist-more:hover {
    background: #003da5;
    color: #fff;
}

/* display:block above would otherwise beat the hidden attribute. */
.proglist .proglist-more[hidden] {
    display: none;
}

.proglist .proglist-empty {
    text-align: center;
    color: #717171;
    padding: 50px 20px;
    margin: 0;
}

/* ---- Ladder rows -------------------------------------------------------
   Faceted embeds render one full-width row per program instead of the photo
   tiles, so the shared ".proglist li" tile geometry has to be undone. Higher
   specificity rather than !important, since page-level Elementor CSS already
   competes for these selectors on some subsites. */

.proglist.has-rows ul.list {
    display: block;
    text-align: left;
    margin: 0;
    padding: 0;
}

.proglist.has-rows li.item {
    display: flex;
    align-items: flex-start;
    gap: 18px;
    height: auto;
    width: auto;
    min-width: 0;
    max-width: none;
    margin: 0;
    padding: 26px 0;
    overflow: visible;
    box-shadow: none;
    border-radius: 0;
    border-bottom: solid 1px #e7e7e7;
    text-align: left;
    transition: none;
}

.proglist.has-rows li.item:first-child {
    padding-top: 0;
}

.proglist.has-rows li.item:hover {
    box-shadow: none;
    opacity: 1;
}

.proglist.has-rows .prog-row-head {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 5px 11px;
}

.proglist.has-rows .prog-row-link {
    display: inline-block;
    text-decoration: none;
}

/* No colour here on purpose -- the span inherits the theme's link colour. */
.proglist.has-rows .prog-row-link .prog-title {
    font-size: 19px;
    font-weight: 700;
    line-height: 1.3;
}

.proglist.has-rows .prog-row-link:hover .prog-title {
    text-decoration: underline;
}

/* The four spec fields read as a block rather than a run-on sentence when they
   sit on their own tinted strip. */
.proglist.has-rows .prog-row-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 2px 18px;
    margin-top: 12px;
    padding: 9px 14px;
    background: #f6f7f9;
    border: solid 1px #eceef1;
    border-radius: 6px;
    font-size: 14px;
    line-height: 1.4;
    color: #6b6b6b;
}

.proglist.has-rows .prog-meta-dept {
    font-weight: 700;
    color: #4a4a4a;
}

/* Geometry and palette lifted from the .pills on /academics/degrees/ so the two
   program listings read as one system. Amber is that page's default tone; the
   slug class picks the variant. */
.proglist.has-rows .prog-badge {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 8px;
    background: #fff5cc;
    color: #a8926a;
    border: solid 1px #f0dcb8;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.5;
    text-transform: none;
    letter-spacing: normal;
    white-space: nowrap;
}

.proglist.has-rows .prog-badge.graduate {
    background: #cecece;
    color: #666;
    border-color: #b4b4b4;
}

.proglist.has-rows .prog-badge.undergraduate,
.proglist.has-rows .prog-badge.masters {
    background: #dde8ff;
    color: #667a94;
    border-color: #c5dbf4;
}

/* Doctoral has no pill on the degrees directory yet, so this stays inside the
   same soft-tint family rather than inventing a louder treatment. */
.proglist.has-rows .prog-badge.doctoral {
    background: #d9efe4;
    color: #4a7c63;
    border-color: #bcdfcd;
}

/* Fixed-width thumbnail so every title starts on the same vertical line -- a
   ragged left edge is what makes a ladder hard to scan. */
.proglist.has-rows .prog-row-thumb {
    flex: 0 0 175px;
    display: block;
    line-height: 0;
    border-radius: 6px;
    overflow: hidden;
}

.proglist.has-rows .prog-row-thumb img {
    display: block;
    width: 175px;
    height: 125px;
    object-fit: cover;
    margin: 0;
    border-radius: 0;
}

/* min-width:0 lets the body shrink rather than forcing the row wider than the
   results column when a long title has no break opportunity. */
.proglist.has-rows .prog-row-body {
    flex: 1 1 auto;
    min-width: 0;
}

.proglist.has-rows .prog-meta-label {
    font-weight: 700;
    color: #4a4a4a;
}

.proglist.has-rows .prog-row-excerpt {
    margin: 12px 0 0;
    font-size: 14.5px;
    line-height: 1.5;
    color: #5a5a5a;
}

/* ---- Sticky filter rail ----
   Capped to the viewport with its own scrollbar, so a rail taller than the
   window can still reach its last option instead of being cut off. */
@media (min-width: 881px) {
    /* 60px, not 20: the site header is sticky too, so the rail has to clear it
       or the programs count sits underneath the nav bar. */
    .proglist.has-facets .proglist-facets {
        position: sticky;
        top: 60px;
        max-height: calc(100vh - 80px);
        overflow-y: auto;
    }

    /* The admin bar is a further fixed 32px on desktop, and stacks on top of the
       header clearance above. */
    .admin-bar .proglist.has-facets .proglist-facets {
        top: 92px;
        max-height: calc(100vh - 112px);
    }
}

/* Under 768 the side-by-side row starves both halves. Rebuild each program as a
   card, borrowing the tile view's containment -- 10px radius, clipped photo, a
   soft lift -- so the list reads as a stack of objects rather than a run of
   hairline-separated text. */
@media (max-width: 767px) {
    .proglist.has-rows li.item {
        display: block;
        padding: 0;
        margin: 0 0 20px;
        background: #fff;
        border: none;
        border-radius: 10px;
        overflow: hidden;
        box-shadow: 0 1px 2px rgba(16, 32, 64, .07), 0 6px 18px rgba(16, 32, 64, .08);
    }

    .proglist.has-rows li.item:last-child {
        margin-bottom: 0;
    }

    /* Full bleed to the card edges; the card's own overflow does the rounding. */
    .proglist.has-rows .prog-row-thumb {
        width: 100%;
        margin: 0;
        border-radius: 0;
    }

    /* 160 to match the tile view's photo exactly, so the two layouts read as
       the same component at different sizes. */
    .proglist.has-rows .prog-row-thumb img {
        width: 100%;
        height: 160px;
    }

    .proglist.has-rows .prog-row-body {
        width: 100%;
        padding: 15px 15px 17px;
        box-sizing: border-box;
    }

    /* display:block on the container was not enough on its own: an inline-block
       link followed by inline-block pills still share a line and wrap mid-run,
       which is what stranded a single pill on its own row under the title.
       Making the link a block guarantees the pills start a clean line. */
    .proglist.has-rows .prog-row-head {
        display: block;
    }

    .proglist.has-rows .prog-row-link {
        display: block;
    }

    .proglist.has-rows .prog-row-link .prog-title {
        font-size: 18px;
        line-height: 1.28;
    }

    .proglist.has-rows .prog-badge {
        margin-top: 9px;
    }

    /* Pulled out to the card edges so the details read as a band across the card
       -- the same device the tile uses for its title bar -- rather than a panel
       floating inside a panel. */
    .proglist.has-rows .prog-row-meta {
        gap: 2px 14px;
        margin: 13px -15px 0;
        padding: 11px 15px;
        border-left: none;
        border-right: none;
        border-radius: 0;
    }

    /* Three lines is enough to judge a program from. At full length each card
       ran past 600px, so a phone screen held barely one -- which defeats a list
       whose whole job is comparison. The full text is one tap away. */
    .proglist.has-rows .prog-row-excerpt {
        margin-top: 13px;
        display: -webkit-box;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }
}

/* ---- Sort control ---- */

.proglist .proglist-sort-label {
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    color: #888;
    margin-left: 14px;
    margin-right: 7px;
}

.proglist select.proglist-sort {
    padding: 6px 12px;
    border: solid 1px #e4e4e4;
    border-radius: 30px;
    background: #fff;
    color: #717171;
    font-size: 14px;
    max-width: 220px;
    width: auto;
}

.proglist select.proglist-sort:focus {
    outline: none;
    border-color: #aaa;
}

@media (max-width: 1100px) {
    .proglist.has-facets .proglist-layout {
        gap: 20px;
    }
    .proglist.has-facets .proglist-facets {
        flex-basis: 200px;
    }
}

/* Below this the rail has no room beside the results, so it becomes a compact
   two-column block above them. */
@media (max-width: 880px) {
    .proglist.has-facets .proglist-layout {
        display: block;
    }
    .proglist.has-facets .proglist-facets {
        width: 100%;
        margin-bottom: 26px;
        columns: 2;
        column-gap: 26px;
    }
    .proglist.has-facets .facet-bar-head {
        column-span: all;
    }
    .proglist.has-facets .facet-group {
        break-inside: avoid;
    }
}

@media (max-width: 520px) {
    .proglist.has-facets .proglist-facets {
        columns: 1;
    }
}
