#earnings-calendar-page{padding-bottom:40px}.earnings-shell{display:grid;gap:16px}.earnings-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding:8px 2px}.earnings-kicker{color:var(--accent);font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.earnings-hero h2{margin:5px 0 0;font-family:var(--font-display);font-size:clamp(1.65rem,2.6vw,2.35rem);letter-spacing:-.035em}.earnings-hero p{max-width:720px;margin:8px 0 0;color:var(--muted);font-size:.88rem;line-height:1.55}.earnings-sync{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:7px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--muted);font-size:.7rem;font-weight:650;white-space:nowrap}.earnings-sync::before{width:7px;height:7px;flex:none;border-radius:50%;background:var(--positive);box-shadow:0 0 0 3px color-mix(in srgb,var(--positive) 12%,transparent);content:""}.earnings-sync.is-degraded{border-color:color-mix(in srgb,var(--warning) 34%,var(--border));color:var(--warning)}.earnings-sync.is-degraded::before{background:var(--warning);box-shadow:0 0 0 3px color-mix(in srgb,var(--warning) 12%,transparent)}

/* Compact Market Data-style filter controls. */
.earnings-filter-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.earnings-filter-select,.earnings-followed-chip,.earnings-auto-sync{display:inline-flex;align-items:center;min-height:38px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--muted);font-size:.72rem;font-weight:650}.earnings-filter-select{position:relative;display:grid;grid-template-columns:auto auto;align-items:center;overflow:hidden}.earnings-filter-select>span{padding-left:11px;color:var(--muted-2);font-size:.6rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.earnings-filter-select::after{position:absolute;right:10px;width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;pointer-events:none;content:"";transform:translateY(-2px) rotate(45deg)}.earnings-filter-select select{min-height:36px;padding:5px 30px 5px 8px;border:0;outline:0;appearance:none;background:transparent;color:var(--text);font:inherit;font-weight:750;cursor:pointer}.earnings-filter-select select option{background:var(--surface);color:var(--text)}.earnings-filter-select:hover,.earnings-followed-chip:hover{border-color:var(--border-strong);background:var(--surface-2);color:var(--text)}.earnings-filter-select:focus-within{border-color:color-mix(in srgb,var(--accent) 55%,var(--border));box-shadow:0 0 0 3px var(--accent-soft)}.earnings-followed-chip{gap:7px;padding:5px 11px;cursor:pointer}.earnings-followed-chip:has(input:checked){border-color:color-mix(in srgb,var(--accent) 34%,transparent);background:var(--accent-soft);color:var(--accent)}.earnings-followed-chip input{width:13px;height:13px;margin:0;accent-color:var(--accent)}.earnings-auto-sync{padding:5px 11px}.earnings-auto-sync::before{width:7px;height:7px;margin-right:7px;border-radius:50%;background:var(--positive);content:""}
.earnings-legend{display:flex;flex-wrap:wrap;gap:16px;color:var(--muted-2);font-size:.68rem}.earnings-legend span{display:inline-flex;align-items:center;gap:6px}.earnings-legend i{width:7px;height:7px;border-radius:50%;background:var(--muted-2)}.earnings-legend .confirmed{background:var(--positive)}.earnings-legend .estimated{background:var(--warning)}

/* Taller event navigator: one active multi-column list, bounded with scroll. */
.earnings-timeline{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:0 12px 30px rgba(0,0,0,.08)}.earnings-timeline-tabs{display:flex;align-items:center;justify-content:center;min-height:48px;padding:6px 10px;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--surface) 94%,var(--accent) 6%)}.earnings-timeline-tabs>i{color:var(--border-strong);font-style:normal}.earnings-timeline-tab{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:34px;padding:5px 13px;border:0;border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:.76rem;font-weight:750;cursor:pointer}.earnings-timeline-tab em{display:grid;min-width:20px;height:20px;padding:0 5px;place-items:center;border-radius:999px;background:var(--surface-2);color:var(--muted-2);font-size:.58rem;font-style:normal}.earnings-timeline-tab:hover{color:var(--text)}.earnings-timeline-tab.active{background:var(--accent-soft);color:var(--accent)}.earnings-timeline-tab.active em{background:var(--accent);color:#fff}.earnings-timeline-tab:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.earnings-timeline-panel{height:330px;max-height:min(42vh,380px);min-height:240px}.earnings-timeline-group{display:none;height:100%;padding:12px}.earnings-timeline-group.active{display:block}.earnings-timeline-events{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));align-content:start;gap:8px;height:100%;overflow-y:auto;padding:1px 6px 6px 1px;scrollbar-width:thin}.earnings-timeline-events>p{align-self:center;margin:auto;color:var(--muted-2);font-size:.75rem}.earnings-calendar-event{display:grid;width:100%;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:7px;padding:6px 7px;border:1px solid var(--border);border-left:3px solid var(--muted-2);border-radius:7px;background:var(--surface-2);color:var(--text);font:inherit;text-align:left;cursor:default}.earnings-calendar-event.confirmed,.earnings-calendar-event.reported{border-left-color:var(--positive)}.earnings-calendar-event.estimated{border-left-color:var(--warning)}.earnings-calendar-event.is-timeline{min-height:92px;padding:13px 14px;border-left-width:3px;cursor:pointer}.earnings-calendar-event.is-timeline:hover{border-color:var(--border-strong);background:color-mix(in srgb,var(--surface-2) 82%,var(--accent) 18%)}.earnings-event-copy{display:grid;min-width:0;gap:2px}.earnings-event-logo{width:30px!important;height:30px!important;min-width:30px!important;border-radius:8px!important}.earnings-calendar-event.is-timeline .earnings-event-logo{width:48px!important;height:48px!important;min-width:48px!important;border-radius:12px!important}.earnings-event-logo .asset-logo-fallback{font-size:.55rem!important}.earnings-calendar-event.is-timeline .earnings-event-logo .asset-logo-fallback{font-size:.72rem!important}.earnings-calendar-event-main{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:6px}.earnings-calendar-event-main strong{overflow:hidden;font-size:.69rem;text-overflow:ellipsis}.earnings-calendar-event.is-timeline .earnings-calendar-event-main strong{font-size:.82rem}.earnings-calendar-event-main em{flex:none;color:var(--muted);font-size:.58rem;font-style:normal}.earnings-event-company{overflow:hidden;color:var(--text);font-size:.72rem;font-weight:650;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.earnings-calendar-event-meta{overflow:hidden;color:var(--muted-2);font-size:.58rem;text-overflow:ellipsis;white-space:nowrap}.earnings-calendar-event.is-timeline .earnings-calendar-event-meta{font-size:.64rem}.earnings-calendar-event:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* Conventional single-month calendar. */
.earnings-month-nav{display:grid;grid-template-columns:auto minmax(180px,320px) auto;align-items:center;justify-content:center;gap:8px;padding:8px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}.earnings-month-nav strong{text-align:center;text-transform:capitalize}.earnings-month-nav .secondary-btn{min-width:42px}.earnings-calendar-grid{display:block;min-height:640px;overflow-x:auto}.earnings-calendar-grid>.earnings-month{width:100%;min-width:760px}.earnings-month{overflow:hidden;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:0 12px 30px rgba(0,0,0,.08)}.earnings-weekdays,.earnings-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.earnings-weekdays{border-bottom:1px solid var(--hairline);background:var(--surface)}.earnings-weekdays span{padding:9px 10px;color:var(--muted-2);font-size:.62rem;font-weight:750;letter-spacing:.04em;text-align:right;text-transform:uppercase}.earnings-calendar-day{min-height:118px;padding:8px;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);background:var(--surface)}.earnings-calendar-day:nth-child(7n){border-right:0}.earnings-calendar-day.is-outside{background:color-mix(in srgb,var(--surface-2) 54%,transparent);opacity:.48}.earnings-calendar-day.is-today{box-shadow:inset 0 0 0 1px var(--accent)}.earnings-calendar-day.has-events{background:color-mix(in srgb,var(--surface) 96%,var(--accent) 4%)}.earnings-calendar-day>header{display:flex;align-items:center;justify-content:space-between;margin-bottom:7px}.earnings-calendar-day time{display:grid;width:24px;height:24px;place-items:center;border-radius:50%;color:var(--muted);font-size:.68rem;font-weight:750}.earnings-calendar-day.is-today time{background:var(--accent);color:#fff}.earnings-calendar-day>header>span{display:grid;min-width:20px;height:20px;place-items:center;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:.6rem}.earnings-calendar-day.has-events>header>span{background:var(--accent);color:#fff}.earnings-calendar-events{display:grid;gap:5px}.earnings-calendar-event.is-calendar{padding:6px}.earnings-empty{padding:56px 24px;border:1px dashed var(--border);border-radius:14px;text-align:center}.earnings-empty strong,.earnings-empty span{display:block}.earnings-empty span{max-width:520px;margin:7px auto 0;color:var(--muted);font-size:.78rem}

@media(max-width:900px){.earnings-hero{align-items:flex-start;flex-direction:column}.earnings-filter-bar{flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px;scrollbar-width:none}.earnings-filter-bar::-webkit-scrollbar{display:none}.earnings-sync,.earnings-filter-select,.earnings-followed-chip,.earnings-auto-sync{flex:0 0 auto}.earnings-calendar-grid{scroll-snap-type:x proximity}.earnings-month{scroll-snap-align:start}}
@media(max-width:520px){.earnings-hero p{font-size:.82rem}.earnings-timeline-tabs{justify-content:space-between;padding-inline:5px}.earnings-timeline-tab{gap:5px;padding-inline:8px;font-size:.7rem}.earnings-timeline-panel{height:300px;max-height:46vh}.earnings-timeline-group{padding:9px}.earnings-timeline-events{grid-auto-flow:column;grid-auto-columns:minmax(220px,82vw);grid-template-columns:none;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity}.earnings-calendar-event.is-timeline{min-height:92px;scroll-snap-align:start}.earnings-month-nav{grid-template-columns:auto minmax(0,1fr) auto}.earnings-month-nav strong{font-size:.84rem}.earnings-calendar-grid{min-height:590px;margin-inline:-4px;padding:0 4px 8px}.earnings-month{min-width:700px}.earnings-calendar-day{min-height:104px}}


/* Weekly day navigator: Monday-Sunday, independently browsable from the monthly grid. */
.earnings-week-nav{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:stretch;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--surface) 94%,var(--accent) 6%)}
.earnings-week-days{display:grid;grid-template-columns:repeat(7,minmax(82px,1fr));min-width:0}
.earnings-week-arrow,.earnings-week-day{border:0;background:transparent;color:var(--muted);font:inherit;cursor:pointer;transition:background-color 160ms ease,color 160ms ease,border-color 160ms ease}
.earnings-week-arrow{display:grid;min-height:68px;place-items:center;font-size:1.15rem}.earnings-week-arrow:first-child{border-right:1px solid var(--hairline)}.earnings-week-arrow:last-child{border-left:1px solid var(--hairline)}
.earnings-week-arrow:hover{background:var(--surface-2);color:var(--text)}
.earnings-week-day{position:relative;display:grid;grid-template-columns:1fr auto;grid-template-areas:"weekday count" "date count";align-content:center;gap:2px 6px;min-height:68px;padding:8px 10px;border-right:1px solid var(--hairline);text-align:left}.earnings-week-day:last-child{border-right:0}
.earnings-week-day span{grid-area:weekday;font-size:.58rem;font-weight:800;letter-spacing:.065em;text-transform:uppercase}.earnings-week-day strong{grid-area:date;color:var(--text);font-size:.76rem;white-space:nowrap}.earnings-week-day em{grid-area:count;display:grid;min-width:22px;height:22px;padding:0 5px;place-items:center;border-radius:999px;background:var(--surface-2);color:var(--muted-2);font-size:.6rem;font-style:normal}
.earnings-week-day:hover{background:var(--surface-2);color:var(--text)}.earnings-week-day.active{background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent);color:var(--accent)}.earnings-week-day.active em{background:var(--accent);color:#fff}.earnings-week-day.is-today:not(.active)::after{position:absolute;right:10px;bottom:6px;width:5px;height:5px;border-radius:50%;background:var(--accent);content:""}.earnings-week-day:focus-visible,.earnings-week-arrow:focus-visible{z-index:1;outline:2px solid var(--accent);outline-offset:-2px}
.earnings-timeline-panel{height:330px;max-height:min(42vh,380px);min-height:240px;padding:12px}.earnings-timeline-events{display:flex;align-items:stretch;gap:10px;height:100%;overflow-x:auto;overflow-y:hidden;padding:1px 2px 7px;scroll-snap-type:x proximity;scrollbar-width:thin}.earnings-timeline-events>.earnings-calendar-event.is-timeline{flex:0 0 280px;width:280px;min-width:280px;max-width:280px;height:100%;align-content:center;scroll-snap-align:start}.earnings-timeline-events>p{display:grid;width:100%;height:100%;place-items:center;margin:0;color:var(--muted-2);font-size:.75rem}
@media(max-width:760px){.earnings-week-nav{grid-template-columns:40px minmax(0,1fr) 40px}.earnings-week-days{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.earnings-week-days::-webkit-scrollbar{display:none}.earnings-week-day{flex:0 0 106px;scroll-snap-align:center}.earnings-week-arrow{min-height:66px}.earnings-timeline-panel{height:350px;max-height:52vh}.earnings-timeline-events{scroll-snap-type:x mandatory}}

/* Upcoming earnings replaces the fixed-height weekly picker. The content grows
   naturally, groups results by date, and remains readable when only one event
   is available. */
.earnings-result-count{display:inline-flex;align-items:center;min-height:38px;color:var(--muted-2);font-size:.72rem;font-weight:700;white-space:nowrap}
.earnings-clear-filters{min-height:38px;padding:6px 11px;border:1px solid var(--border);border-radius:10px;background:transparent;color:var(--muted);font:inherit;font-size:.72rem;font-weight:700;cursor:pointer}.earnings-clear-filters:hover{border-color:var(--border-strong);background:var(--surface-2);color:var(--text)}.earnings-clear-filters:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.earnings-timeline{border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}.earnings-upcoming{border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:0 12px 30px rgba(0,0,0,.08);overflow:hidden}.earnings-upcoming-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;padding:16px 18px;border-bottom:1px solid var(--hairline);background:color-mix(in srgb,var(--surface) 94%,var(--accent) 6%)}.earnings-upcoming-head span{color:var(--accent);font-size:.64rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.earnings-upcoming-head h3{margin:4px 0 0;color:var(--text);font-family:var(--font-display);font-size:1.1rem;letter-spacing:-.02em}.earnings-upcoming-head p{margin:0;color:var(--muted);font-size:.72rem;font-weight:650;text-align:right}.earnings-upcoming-list{display:grid;gap:0}.earnings-upcoming-day{display:grid;grid-template-columns:172px minmax(0,1fr);gap:16px;padding:16px 18px;border-bottom:1px solid var(--hairline)}.earnings-upcoming-day:last-child{border-bottom:0}.earnings-upcoming-day>header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.earnings-upcoming-day>header>div{display:grid;gap:4px}.earnings-upcoming-day>header span{color:var(--text);font-size:.8rem;font-weight:780;text-transform:capitalize}.earnings-upcoming-day>header time{color:var(--muted-2);font-size:.68rem;font-weight:650}.earnings-upcoming-day>header em{flex:none;padding:4px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted-2);font-size:.59rem;font-style:normal;font-weight:750;white-space:nowrap}.earnings-upcoming-events{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:8px}.earnings-calendar-event.is-upcoming{min-height:78px;padding:10px 11px;border-left-width:3px;cursor:pointer;transition:border-color 140ms ease,background-color 140ms ease,transform 140ms ease}.earnings-calendar-event.is-upcoming:hover{border-color:var(--border-strong);background:color-mix(in srgb,var(--surface-2) 82%,var(--accent) 18%);transform:translateY(-1px)}.earnings-calendar-event.is-upcoming .earnings-event-logo{width:38px!important;height:38px!important;min-width:38px!important;border-radius:10px!important}.earnings-calendar-event.is-upcoming .earnings-calendar-event-main strong{font-size:.77rem}.earnings-calendar-event.is-upcoming .earnings-event-company{font-size:.68rem}.earnings-calendar-event.is-upcoming .earnings-calendar-event-meta{font-size:.6rem}.earnings-upcoming-empty{margin:0;padding:28px 18px;color:var(--muted);font-size:.78rem;text-align:center}.earnings-calendar-event.is-calendar{cursor:pointer;transition:border-color 140ms ease,background-color 140ms ease}.earnings-calendar-event.is-calendar:hover{border-color:var(--border-strong);background:color-mix(in srgb,var(--surface-2) 80%,var(--accent) 20%)}
@media(max-width:760px){.earnings-upcoming-head{align-items:flex-start;flex-direction:column}.earnings-upcoming-head p{text-align:left}.earnings-upcoming-day{grid-template-columns:1fr;gap:10px;padding:14px}.earnings-upcoming-events{grid-template-columns:1fr}.earnings-result-count{display:none}.earnings-clear-filters{flex:0 0 auto}}

/* Mobile calendar-first reading order. The month becomes a compact temporal
   index; tapping a populated date reveals the complete event cards below it. */
.earnings-day-open,.earnings-day-static,.earnings-day-agenda{display:none}
@media(max-width:760px){
  #earnings-calendar-page{padding-bottom:24px}
  .earnings-shell{gap:12px}
  .earnings-hero{order:1;padding:0 2px}
  .earnings-hero h2{font-size:1.55rem}
  .earnings-hero p{display:-webkit-box;margin-top:6px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}
  .earnings-month-nav{order:2;position:sticky;top:0;z-index:3;min-height:46px;padding:5px 7px;border-radius:12px;box-shadow:0 6px 18px rgba(0,0,0,.08)}
  .earnings-calendar-grid{order:3;min-height:0;margin:0;padding:0;overflow:visible;scroll-snap-type:none}
  .earnings-calendar-grid>.earnings-month{width:100%;min-width:0}
  .earnings-month{border-radius:14px;box-shadow:0 8px 22px rgba(0,0,0,.06)}
  .earnings-weekdays span{padding:7px 1px;text-align:center;font-size:.56rem}
  .earnings-calendar-day{position:relative;min-width:0;min-height:50px;padding:3px}
  .earnings-calendar-day>header,.earnings-calendar-events{display:none}
  .earnings-day-static,.earnings-day-open{width:100%;height:100%;min-height:43px;border:0;border-radius:8px;background:transparent;color:var(--muted);font:inherit}
  .earnings-day-static{display:grid;place-items:center}
  .earnings-day-open{display:grid;grid-template-rows:1fr auto;place-items:center;padding:3px;cursor:pointer}
  .earnings-day-open time,.earnings-day-static time{font-size:.72rem;font-weight:760}
  .earnings-day-open span{display:grid;min-width:18px;height:16px;padding:0 4px;place-items:center;border-radius:999px;background:var(--accent);color:#fff;font-size:.54rem;font-weight:800}
  .earnings-day-open:focus-visible{outline:2px solid var(--accent);outline-offset:-1px}
  .earnings-day-open[aria-expanded="true"]{background:var(--accent-soft);color:var(--accent)}
  .earnings-calendar-day.is-today{box-shadow:inset 0 0 0 1px var(--accent)}
  .earnings-day-agenda{order:4;padding:12px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}
  .earnings-day-agenda:not(.hidden-page){display:grid;gap:10px}
  .earnings-day-agenda>header{display:flex;align-items:center;justify-content:space-between;gap:12px}
  .earnings-day-agenda>header span{color:var(--accent);font-size:.58rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
  .earnings-day-agenda h3{margin:3px 0 0;font-size:.95rem}
  .earnings-day-agenda>div{display:grid;gap:8px}
  .earnings-day-agenda .earnings-calendar-event.is-timeline{min-height:72px}
  .earnings-empty{order:4;padding:24px 16px}
  .earnings-filter-bar{order:5;position:relative;gap:6px;margin-inline:-2px;padding:0 2px 4px}
  .earnings-sync,.earnings-filter-select,.earnings-followed-chip,.earnings-auto-sync,.earnings-clear-filters{min-height:36px}
  .earnings-legend{order:7;gap:8px 14px}
  .earnings-legend span:last-child{flex-basis:100%;line-height:1.4}
  .earnings-timeline{order:6}
  .earnings-upcoming-head{gap:5px;padding:12px 14px}
  .earnings-upcoming-head p{font-size:.68rem}
  .earnings-upcoming-day{gap:8px;padding:11px 12px}
  .earnings-calendar-event.is-upcoming{min-height:68px}
}
