.tenant-news{height:32px;min-height:32px;display:flex;align-items:center;gap:10px;padding:0 16px;position:relative;z-index:130;background:#f6efcf;color:#514419;border-bottom:1px solid #e7dcae;font-family:inherit;font-size:11px;line-height:1.3;flex:none}.tenant-news[hidden]{display:none}.tenant-news-label{display:flex;align-items:center;gap:6px;font-weight:800;font-size:11px;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.tenant-news-label i{width:5px;height:5px;border-radius:50%;background:#b4942d}.tenant-news button{font:inherit;border:0;background:transparent;color:inherit;cursor:pointer;min-height:32px;padding:0}.tenant-news-headline{flex:1;min-width:0;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tenant-news .tenant-news-pause{width:32px;flex:none;text-align:center;font-size:12px}.tenant-news button:focus-visible,.tenant-news a:focus-visible{outline:2px solid currentColor;outline-offset:-2px}.tenant-news-list{position:absolute;top:100%;right:12px;left:12px;padding:6px 12px;background:var(--ticker-list-bg,#fffaf0);color:var(--ticker-list-ink,#514419);box-shadow:0 8px 20px #0002;border:1px solid var(--ticker-list-rule,#e7dcae);border-radius:0 0 8px 8px;max-height:40vh;overflow:auto}.tenant-news-list[hidden]{display:none}.tenant-news-list>div{display:flex;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid #e7dcae;font-size:12px}.tenant-news-list>div:last-child{border:0}.tenant-news-list span{flex:1;overflow-wrap:anywhere}.tenant-news-list a{white-space:nowrap;font-weight:750;text-decoration:underline;min-height:28px;display:flex;align-items:center}
[data-theme=dark] .tenant-news{background:#302c1d;color:#eee0a8;border-color:#4d452d}[data-theme=dark] .tenant-news-list{background:var(--ticker-list-bg-dark,#242219);color:var(--ticker-list-ink-dark,#eee0a8);border-color:var(--ticker-list-rule-dark,#4d452d)}
@media(max-width:760px){.tenant-news{padding-inline:10px;gap:8px;font-size:11px;height:44px;min-height:44px}.tenant-news button{min-height:44px}.tenant-news .tenant-news-pause{width:44px}.tenant-news-label{font-size:11px}.tenant-news-list{left:8px;right:8px}}

/* A flat charcoal strip separates updates from the surrounding light surfaces. */
.tenant-news,[data-theme=dark] .tenant-news{background:var(--ticker-bg);color:var(--ticker-ink);border-bottom-color:var(--ticker-rule)}
.tenant-news-label,.tenant-news .tenant-news-pause{color:var(--ticker-accent)}
.tenant-news-label i{background:var(--ticker-accent)}

/* Two matching groups make a continuous right-to-left news ticker. */
.tenant-news-headline{display:block;text-overflow:clip;direction:ltr}
.tenant-news-track{display:flex;width:max-content;min-width:200%;animation:tenant-news-scroll-left var(--news-duration,45s) linear infinite;will-change:transform}
.tenant-news-group{display:flex;align-items:center;flex:1 0 auto;gap:32px;padding-inline-end:32px}
.tenant-news-item{display:inline-flex;align-items:center;gap:32px;flex:none;white-space:nowrap}
.tenant-news-item::after{content:"•";opacity:.5}
@keyframes tenant-news-scroll-left{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.tenant-news[data-news-paused=true] .tenant-news-track,.tenant-news[data-news-expanded=true] .tenant-news-track,.tenant-news:has(:focus-visible) .tenant-news-track{animation-play-state:paused}
@media(hover:hover){.tenant-news:hover .tenant-news-track{animation-play-state:paused}}
/* P08: off-screen or a hidden tab pauses (tenant-news.js .is-offscreen); reduced motion shows the first item, still. */
.tenant-news.is-offscreen .tenant-news-track{animation-play-state:paused}
.tenant-news.is-static .tenant-news-track{animation:none;transform:none}
@media (prefers-reduced-motion:reduce){.tenant-news-track{animation:none;transform:none}}
@media(min-width:761px){.tenant-news-headline{-webkit-mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent);mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent)}}
/* P08: touch hit areas of 44 px; the headline's box is transparent, the pause glyph keeps its size. */
@media (pointer:coarse){
 .tenant-news .tenant-news-headline{min-height:44px}
 .tenant-news .tenant-news-pause{position:relative}
 .tenant-news .tenant-news-pause::after{content:"";position:absolute;left:50%;top:50%;width:max(100%,44px);height:max(100%,44px);transform:translate(-50%,-50%)}
}

/* Keep the desktop ticker, masthead and fixed navigation aligned on scroll. */
@media(min-width:761px){
 #app>.tenant-news{position:sticky;top:0}
 #app>.tenant-news:not([hidden])~.masthead{top:32px}
 #app>.tenant-news:not([hidden])~.rail{top:calc(var(--header) + 32px)}
}

/* Phones show one readable teaser; tapping it still expands every full notice. */
@media(max-width:760px){
 /* UX-04: the teaser button itself is the 44 px tap target (it was 28 px inside 8 px padding); the label centres beside it. */
 .tenant-news{height:auto;min-height:44px;padding:0 12px;align-items:center}
 .tenant-news-label{padding-top:0;line-height:1.5}
 .tenant-news .tenant-news-headline{min-height:44px;white-space:normal;line-height:1.5}
 .tenant-news-track{width:100%;min-width:0;animation:none;transform:none;will-change:auto}
 .tenant-news-group{display:block;flex:1 1 100%;min-width:0;width:100%;padding:0}
 .tenant-news-group+ .tenant-news-group,.tenant-news-item:not(:first-child),.tenant-news .tenant-news-pause{display:none}
 .tenant-news-item{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;white-space:normal;overflow-wrap:anywhere;font-size:11px}
 .tenant-news-item::after{content:' ›';opacity:1}
 .tenant-news-item[data-short]{font-size:0}
 .tenant-news-item[data-short]::before{content:attr(data-short);font-size:11px}
 .tenant-news-item[data-short]::after{font-size:11px}
 .tenant-news-list>div{align-items:flex-start;gap:8px;font-size:12px;line-height:1.5}
 .tenant-news-list a{min-height:44px;flex:none}
}
