/* Teaching and service page additions. All selectors are scoped to ts-* classes. */
.ts-page { color: #28333f; line-height: 1.65; min-width: 0; }
.ts-page *, .ts-page *::before, .ts-page *::after { box-sizing: border-box; }
.ts-page-header { margin: 0 0 1.4rem; }
.ts-eyebrow { color: #087c60; letter-spacing: .12em; font-size: .73rem; font-weight: 750; margin: 0 0 .5rem; }
.ts-page-title { font-size: clamp(1.75rem, 3vw, 2.25rem); line-height: 1.18; color: #16364b; margin: 0 0 1rem; font-weight: 750; }
.ts-intro { font-size: 1.04rem; max-width: 76ch; color: #46525e; margin: 0; }
.ts-copy { margin: .45rem 0; color: #46525e; font-size: .96rem; }
.ts-meta { color: #5e6b75; font-size: .84rem; line-height: 1.55; margin: .35rem 0; }
.ts-role { color: #087b5e; font-weight: 650; font-size: .87rem; line-height: 1.5; margin: .35rem 0; }
.ts-credentials { display: flex; flex-wrap: wrap; gap: 1rem 1.8rem; margin-top: 1.2rem; }
.ts-credential { border-left: 3px solid #0c9673; padding-left: .8rem; font-size: .85rem; }
.ts-credential strong, .ts-credential span { display: block; }
.ts-credential strong { color: #2f4352; font-weight: 650; }
.ts-credential span { color: #65717a; font-size: .78rem; }
.ts-nav { display: flex; flex-wrap: wrap; gap: .45rem; margin: 1.45rem 0; padding: .8rem 0; border-top: 1px solid #e4ece8; border-bottom: 1px solid #e4ece8; }
.ts-nav a { display: inline-flex; align-items: center; min-height: 36px; color: #285643; font-size: .81rem; font-weight: 600; padding: .3rem .7rem; border-radius: 5px; background: #f1f7f4; text-decoration: none; }
.ts-nav a:hover { background: #e1f0e8; color: #075c45; }
.ts-page a:focus-visible, .ts-page summary:focus-visible, .ts-page button:focus-visible { outline: 3px solid #00775b; outline-offset: 4px; }
.ts-section { margin-top: 2.5rem; scroll-margin-top: 6rem; }
.ts-section-title { color: #183a4c; font-size: 1.35rem; line-height: 1.35; font-weight: 700; margin: 0 0 1.15rem; padding-bottom: .6rem; border-bottom: 1px solid #dce7e2; }
.ts-subheading { color: #274456; font-size: 1.06rem; margin: 1.6rem 0 .7rem; line-height: 1.4; }
.ts-card-title { font-size: 1rem; line-height: 1.45; color: #243d4c; font-weight: 650; margin: .15rem 0 .45rem; overflow-wrap: anywhere; }
.ts-hero-figure { margin: 1.25rem 0 2rem; background: #f6faf9; border-radius: 10px; overflow: hidden; border: 1px solid #e2ebe6; }
.ts-hero-figure img { display: block; width: 100%; height: auto; max-height: 390px; object-fit: contain; }
.ts-hero-figure figcaption, .ts-process-figure figcaption { color: #5c6b73; font-size: .75rem; line-height: 1.55; padding: .65rem 1rem; }
.ts-image-credit { display: block; font-size: .67rem; color: #65757c; margin-top: .1rem; }
.ts-course-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem; }
.ts-course { border: 1px solid #dfe8e3; background: #fff; border-radius: 9px; padding: 1.15rem; min-width: 0; }
.ts-course:first-child { grid-column: 1 / -1; background: linear-gradient(120deg, #f1f8f4, #fff 80%); border-left: 4px solid #129572; }
.ts-course-grid-past .ts-course:first-child { grid-column: auto; border-left: 1px solid #dfe8e3; background: #fff; }
.ts-course-grid-past { grid-template-columns: 1fr; }
.ts-course-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .5rem; margin-bottom: .5rem; }
.ts-course-top:empty { display: none; }
.ts-course-code { color: #48675b; font-size: .75rem; font-weight: 750; letter-spacing: .06em; }
.ts-badge { display: inline-block; width: fit-content; border-radius: 4px; padding: .15rem .45rem; font-size: .68rem; font-weight: 650; color: #53645c; background: #eff3f0; line-height: 1.5; }
.ts-badge-current { color: #086849; background: #dff3e9; }
.ts-badge-pending { color: #795516; background: #fbefd8; }
.ts-links { display: flex; gap: .6rem 1.2rem; align-items: baseline; flex-wrap: wrap; margin: .9rem 0 .2rem; }
.ts-link { color: #08795b; font-size: .84rem; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; overflow-wrap: anywhere; }
.ts-link:hover { color: #044d39; }
.ts-list { padding-left: 1.2rem; color: #46525e; }
.ts-list li { padding-left: .15rem; margin: .4rem 0; font-size: .9rem; }
.ts-course-details { margin: .7rem 0; }
.ts-process-figure { margin: 1.3rem 0; }
.ts-process { list-style: none; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .65rem; padding: 0; margin: 0; }
.ts-process-step { padding: .9rem; border-top: 3px solid #139b77; background: #f2f7f5; border-radius: 0 0 6px 6px; min-width: 0; }
.ts-step-number { color: #087355; font-size: .75rem; font-weight: 750; letter-spacing: .06em; }
.ts-process-step h3 { font-size: 1rem; margin: .5rem 0; color: #1a4937; }
.ts-process-step .ts-copy { font-size: .8rem; line-height: 1.6; }
.ts-step-outcome { display: block; font-size: .76rem; color: #305247; line-height: 1.45; margin-top: .8rem; }
.ts-process-figure figcaption { padding: .7rem 0; }
.ts-theme-grid, .ts-project-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; margin: .9rem 0; }
.ts-theme { background: #f7f9fa; border-radius: 7px; padding: 1rem; border: 1px solid #e6ecee; }
.ts-theme .ts-copy, .ts-project .ts-copy { font-size: .86rem; }
.ts-development { background: #fcf9f1; border: 1px solid #ede5d0; border-radius: 7px; padding: 1.1rem; margin: 1.1rem 0; }
.ts-development .ts-badge { background: #f3e8cd; color: #775a22; margin-bottom: .6rem; }
.ts-development .ts-copy { font-size: .86rem; }
.ts-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .75rem; margin: 1.1rem 0 1.4rem; }
.ts-stat { display: flex; flex-direction: column; padding: 1rem .8rem; background: #edf6f1; border-radius: 8px; min-width: 0; }
.ts-stat dt { order: 1; color: #2c4f3e; font-size: .8rem; font-weight: 650; line-height: 1.45; }
.ts-stat-number { order: 0; font-size: 2rem; font-weight: 700; line-height: 1.2; color: #087b58; margin: 0 0 .5rem; }
.ts-stat-detail { order: 2; color: #5d6c64; font-size: .69rem; line-height: 1.45; margin: .45rem 0 0; }
.ts-tags { display: flex; flex-wrap: wrap; gap: .45rem; padding: 0; margin: .9rem 0 1.2rem; list-style: none; }
.ts-tags li { color: #4b5f67; background: #f0f4f5; border: 1px solid #e1e9eb; border-radius: 4px; font-size: .74rem; padding: .25rem .6rem; }
.ts-project { border-left: 3px solid #82b4a0; background: #f7faf8; padding: .85rem 1rem; }
.ts-details { border: 1px solid #dce5e0; border-radius: 7px; background: #fff; margin: 1rem 0; }
.ts-details summary { padding: .9rem 1rem; font-size: .9rem; font-weight: 650; color: #305343; cursor: pointer; }
.ts-details summary:hover { background: #f2f7f4; }
.ts-details[open] summary { border-bottom: 1px solid #e3ebe6; }
.ts-details > ul { padding: 0 1rem; }
.ts-details .ts-review-venues { padding: .5rem 1rem .7rem 2.2rem; }
.ts-record-list { list-style: none; padding: 0; margin: .3rem 0; }
.ts-record-list > li { display: grid; grid-template-columns: 145px minmax(0, 1fr); gap: 1rem; border-bottom: 1px solid #e8eeea; padding: .9rem 0; }
.ts-record-list > li:last-child { border-bottom: 0; }
.ts-record-year { color: #5d6c64; font-size: .77rem; line-height: 1.6; }
.ts-record-list .ts-card-title { font-size: .92rem; }
.ts-record-list .ts-copy { font-size: .86rem; }
.ts-service-highlights { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .8rem; margin: 1.5rem 0; }
.ts-highlight { background: #eef6f2; border-top: 3px solid #0f9370; border-radius: 0 0 7px 7px; padding: 1rem; }
.ts-highlight .ts-card-title { font-size: .92rem; }
.ts-highlight .ts-copy { font-size: .82rem; }
.ts-highlight .ts-meta { font-size: .75rem; }
.ts-highlight .ts-link { font-size: .76rem; }
.ts-service-list { padding: 0; list-style: none; margin: 0; }
.ts-service-row { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 1rem; padding: 1rem 0; border-bottom: 1px solid #e7ede9; }
.ts-service-row:last-child { border-bottom: 0; }
.ts-service-date { font-size: .76rem; color: #5c6c63; display: flex; flex-direction: column; align-items: flex-start; gap: .4rem; padding-top: .25rem; }
.ts-service-date:empty { display: none; }
.ts-service-row:has(> .ts-service-date:empty) { grid-template-columns: minmax(0, 1fr); }
.ts-service-detail { min-width: 0; }
.ts-service-detail .ts-role { font-size: .77rem; margin: 0 0 .3rem; }
.ts-service-detail .ts-card-title { font-size: .95rem; margin: 0; }
.ts-service-detail .ts-copy { font-size: .84rem; margin: .3rem 0; }
.ts-service-detail .ts-link { display: inline-block; font-size: .75rem; margin-top: .4rem; }
.ts-proposal-panel { border: 1px solid #eadfc5; background: #fdfaf3; border-radius: 8px; padding: .2rem 1rem .6rem; margin: 1.3rem 0; }
.ts-proposal-panel .ts-subheading { margin-top: .9rem; }
.ts-proposal-panel .ts-service-row { border-bottom-color: #ede5d3; }
.ts-proposal-panel .ts-service-date { gap: .5rem; }
.ts-service-group { margin-top: 1.5rem; }
.ts-review-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .8rem; align-items: start; }
.ts-review-details { margin: 0; }
.ts-review-venues li { font-size: .83rem; }
.ts-nominations { background: #f8faf9; border-left: 3px solid #c8d6ce; padding: .1rem 1rem .4rem; margin-top: 1rem; }
.ts-nominations .ts-subheading { margin-top: .9rem; }
.ts-page-footer { border-top: 1px solid #dce5e0; margin-top: 2.4rem; padding-top: 1rem; }
.ts-error { color: #834b20; }
.ts-retry { padding: .6rem 1rem; background: #087c5b; color: #fff; border: 0; border-radius: 5px; cursor: pointer; font: inherit; }
@media (max-width: 1100px) {
  .ts-process, .ts-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ts-service-highlights { grid-template-columns: 1fr; gap: .6rem; }
  .ts-highlight { border-top: 0; border-left: 3px solid #0f9370; border-radius: 0 6px 6px 0; padding: .8rem 1rem; }
  .ts-highlight .ts-copy, .ts-highlight .ts-meta { margin: .15rem 0; }
}
@media (max-width: 600px) {
  .ts-course-grid, .ts-theme-grid, .ts-project-grid, .ts-review-grid { grid-template-columns: 1fr; }
  .ts-course:first-child { grid-column: auto; }
  .ts-hero-figure img { max-height: none; }
  .ts-intro { font-size: .96rem; }
  .ts-page-title { font-size: 1.75rem; }
  .ts-section-title { font-size: 1.2rem; }
  .ts-service-row { grid-template-columns: 1fr; gap: .35rem; }
  .ts-service-date { flex-direction: row; align-items: center; flex-wrap: wrap; gap: .55rem; }
  .ts-service-date:empty { display: none; }
  .ts-record-list > li { grid-template-columns: 1fr; gap: .25rem; }
  .ts-course { padding: 1rem; }
  .ts-section { margin-top: 2rem; }
  .ts-nav { gap: .35rem; }
  .ts-nav a { font-size: .76rem; padding: .3rem .55rem; }
}
@media (max-width: 380px) {
  .ts-process { grid-template-columns: 1fr; }
  .ts-stats { gap: .5rem; }
  .ts-stat { padding: .8rem .65rem; }
  .ts-credentials { gap: .85rem; }
}
