.app-shell--calendar{--cal-accent:var(--team-color-display,var(--team-color));--cal-on-accent:var(
    --team-color-display-contrast,var(--team-color-contrast)
  );--cal-win:var(--color-win);--cal-lose:var(--color-lose);align-content:start;gap:var(--space-4);max-width:var(--layout-wide-max);padding-top:var(--space-5)}html[data-theme=dark] .app-shell--calendar{--cal-accent:var(--team-color);--cal-on-accent:var(--team-color-contrast)}.cal-head{align-items:flex-end;display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-5);justify-content:space-between}.cal-head__title{display:grid;gap:var(--space-2);min-width:0}.cal-head h1{color:var(--color-ink);font-size:clamp(1.75rem,3vw,2.25rem);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:var(--tracking-display);line-height:1.15}.cal-summary{display:flex;flex-wrap:wrap;gap:4px var(--space-5);margin:0}.cal-summary div{align-items:baseline;display:flex;gap:6px}.cal-summary dt{color:var(--color-muted);font-size:var(--text-sm)}.cal-summary dd{color:var(--color-ink);font-size:var(--text-base);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;margin:0}.cal-head__nav{display:flex;gap:6px}.cal-head__nav button{align-items:center;background:var(--color-paper);border:1px solid var(--color-line-strong);border-radius:var(--radius-md);color:var(--color-ink);display:inline-flex;font-size:var(--text-base);font-weight:700;height:44px;justify-content:center;min-width:44px;transition:background-color .14s ease,border-color .14s ease}.cal-head__nav button:hover{background:var(--color-surface-card);border-color:var(--color-ink)}.cal-head__nav .cal-head__today{padding:0 16px}.cal-filters{align-items:center;border-bottom:1px solid var(--color-line);display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-3);padding-bottom:var(--space-4)}.cal-seg{background:var(--color-surface-card);border-radius:var(--radius-md);display:inline-flex;flex:0 0 auto;padding:3px}.cal-seg button{background:transparent;border:0;border-radius:var(--radius-sm);color:var(--color-muted);font-size:var(--text-sm);font-weight:700;height:34px;padding:0 12px;white-space:nowrap}.cal-seg button:hover:not(:disabled){color:var(--color-ink)}.cal-seg button[aria-pressed=true]{background:var(--color-paper);box-shadow:var(--shadow-sm);color:var(--color-ink)}html[data-theme=dark] .cal-seg button[aria-pressed=true]{background:var(--color-surface-strong)}.cal-seg button:disabled{opacity:.45}.calendar-outcome-legend{display:flex;flex:0 0 auto;gap:4px;margin-left:auto}.calendar-outcome-legend-item{align-items:center;background:transparent;border:1px solid transparent;border-radius:var(--radius-pill);color:var(--color-muted);display:inline-flex;font-size:var(--text-sm);font-weight:700;gap:6px;height:34px;padding:0 10px;white-space:nowrap}.calendar-outcome-legend-item strong{color:var(--color-ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.calendar-outcome-legend-item:hover{background:var(--color-surface-card)}.calendar-outcome-legend-item.is-selected{border-color:var(--color-ink);color:var(--color-ink)}.calendar-outcome-swatch{border-radius:50%;height:8px;width:8px}.calendar-outcome-swatch[data-outcome=win]{background:var(--cal-win)}.calendar-outcome-swatch[data-outcome=lose]{background:var(--cal-lose)}.calendar-outcome-swatch[data-outcome=draw]{background:var(--color-draw)}.calendar-outcome-swatch[data-outcome=cancelled]{background:transparent;border:2px solid var(--color-muted-soft)}.calendar-outcome-swatch[data-outcome=scheduled]{background:var(--color-line-strong)}.cal-layout{align-items:start;display:grid;gap:var(--space-5);grid-template-columns:minmax(0,1fr)}.cal-layout--with-rail{grid-template-columns:minmax(0,1fr) 280px}.cal-main{display:grid;gap:var(--space-4);min-width:0}.cal-weekdays{background:var(--color-canvas);border-bottom:1px solid var(--color-ink);display:grid;grid-template-columns:repeat(7,minmax(0,1fr));position:sticky;top:var(--header-height);z-index:2}.cal-weekdays span{color:var(--color-muted);font-size:var(--text-sm);font-weight:700;padding:10px 8px}.cal-weekdays span:first-child{color:var(--color-error-ink)}.cal-weekdays span:last-child{color:var(--color-lose-ink)}.cal-grid{border-left:1px solid var(--color-line);display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.cal-day{align-content:start;background:var(--color-paper);border-bottom:1px solid var(--color-line);border-right:1px solid var(--color-line);display:grid;gap:6px;min-height:132px;min-width:0;padding:6px}.cal-grid--week .cal-day{min-height:240px}.cal-day.is-outside{background:var(--color-surface-soft)}.cal-day.is-outside .cal-event--line{background:var(--color-paper);border-color:var(--color-line)}.cal-day.is-outside .cal-time-group__label{color:var(--color-muted)}.cal-day.is-today{background:color-mix(in srgb,var(--cal-accent) 7%,var(--color-paper))}.cal-day.is-focused-day{outline:2px solid var(--color-ink);outline-offset:-2px}.cal-day__num{align-items:center;background:transparent;border:0;border-radius:var(--radius-sm);color:var(--color-ink);display:inline-flex;font-size:var(--text-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;gap:5px;height:26px;justify-self:start;min-width:26px;padding:0 6px}.cal-day__num:hover{background:var(--color-surface-strong)}.cal-day.is-sunday .cal-day__num{color:var(--color-error-ink)}.cal-day.is-saturday .cal-day__num{color:var(--color-lose-ink)}.cal-day.is-outside .cal-day__num{color:var(--color-muted-soft);font-weight:500}.cal-day.is-today .cal-day__num{background:var(--cal-accent);color:var(--cal-on-accent)}.cal-day.has-record .cal-day__num:after{background:var(--cal-accent);border-radius:50%;content:"";height:5px;width:5px}.cal-day.is-today.has-record .cal-day__num:after{background:var(--cal-on-accent)}.cal-day__events{align-content:start;min-width:0}.cal-day__events,.cal-time-group{display:grid;gap:3px}.cal-time-group+.cal-time-group{margin-top:3px}.cal-time-group__label{color:var(--color-ink);font-size:var(--text-xs);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700;padding:2px 2px 0}.cal-event{color:var(--color-ink);min-width:0}.cal-event__time{color:var(--color-muted);font-size:var(--text-xs);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700}.cal-event__score{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:800;white-space:nowrap}.cal-event__score i{color:var(--color-muted-soft);font-style:normal;font-weight:500;margin:0 .25em}.cal-event__vs{color:var(--color-muted-soft);font-size:var(--text-xs);font-weight:600}.cal-event[data-finished] [data-won]{color:var(--color-ink);font-weight:800}.cal-event[data-finished] span:not([data-won]):is(.cal-event__team,.cal-event__line-teams>span:not(.cal-event__score)){color:var(--color-muted)}.cal-event__badge{border-radius:4px;color:var(--color-white);flex:0 0 auto;font-size:var(--text-xs);font-weight:800;line-height:1;padding:4px 6px}.cal-event[data-outcome=win] .cal-event__badge{background:var(--cal-win)}.cal-event[data-outcome=lose] .cal-event__badge{background:var(--cal-lose)}.cal-event[data-outcome=draw] .cal-event__badge{background:var(--color-draw)}.cal-event[data-outcome=cancelled] .cal-event__badge{background:var(--color-surface-strong);color:var(--color-muted)}.cal-event__meta{color:var(--color-muted);font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-event__tags{align-items:center;display:flex;flex-wrap:wrap;gap:4px}.cal-event__tag{border:1px solid var(--color-line-strong);border-radius:4px;color:var(--color-muted);font-size:var(--text-xs);font-weight:700;line-height:1;padding:3px 5px}.cal-event__tag[data-kind=stadium]{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-canvas)}.cal-event--line{align-items:center;background:var(--color-surface-soft);border:1px solid transparent;border-radius:var(--radius-xs);display:grid;font-size:var(--text-xs);gap:4px;grid-template-columns:minmax(0,1fr) auto;padding:3px 5px 3px 6px}.cal-event--line:hover{border-color:var(--color-line-strong)}.cal-event__line-teams{align-items:center;display:flex;font-size:var(--text-sm);font-weight:600;gap:4px;min-width:0;white-space:nowrap}.cal-event__line-teams>span:not(.cal-event__score){border-radius:3px;flex:0 0 auto;line-height:1.45;padding:0 3px}.cal-event--line .cal-event__score{font-size:var(--text-sm)}.cal-event--line .cal-event__score i{margin:0 .15em}.cal-event--line[data-finished] [data-won]{background:var(--color-ink);color:var(--color-paper)}.cal-event--line[data-mine]{background:var(--color-surface-card);border-color:var(--color-line)}.cal-event--line[data-mine][data-outcome=win]{background:var(--color-win-tint);border-color:var(--color-win-line)}.cal-event--line[data-mine][data-outcome=lose]{background:var(--color-lose-tint);border-color:var(--color-lose-line)}.cal-event--line[data-mine][data-outcome=win] [data-won]{background:var(--color-win);color:var(--color-white)}.cal-event--line[data-mine][data-outcome=lose] [data-won]{background:var(--color-lose);color:var(--color-white)}.cal-event__dot{border:2px solid var(--color-muted-soft);border-radius:50%;flex:0 0 auto;height:10px;width:10px}.cal-event__dot[data-kind=stadium]{background:var(--cal-accent);border-color:var(--cal-accent)}.cal-event--line[data-outcome=cancelled] .cal-event__line-teams{color:var(--color-muted-soft)}.cal-event__cancel-icon{color:var(--color-cancelled-ink);flex:0 0 auto;font-size:14px;line-height:1}.cal-event--cell{background:var(--color-paper);border:1px solid var(--color-line);border-radius:var(--radius-md);display:grid;gap:6px;padding:8px 9px}.cal-event--cell:hover{border-color:var(--color-ink)}.cal-event--cell .cal-event__head{align-items:center;display:flex;justify-content:space-between}.cal-event__opponent{align-items:center;display:flex;gap:8px;min-width:0}.cal-event__opponent img{flex:0 0 auto;height:32px;object-fit:contain;width:32px}.cal-event__opponent-name{display:grid;gap:1px;line-height:1.2;min-width:0}.cal-event__opponent-name strong{font-size:var(--text-md);font-weight:700}.cal-event__opponent-name small{-webkit-box-orient:vertical;color:var(--color-muted);display:-webkit-box;font-size:var(--text-xs);font-weight:500;-webkit-line-clamp:2;overflow:hidden;word-break:keep-all}.cal-event--cell .cal-event__score{font-size:var(--text-xl);letter-spacing:var(--tracking-title);line-height:1.1}.cal-event--card[data-outcome=win] .cal-event__score,.cal-event--cell[data-outcome=win] .cal-event__score{color:var(--color-win-ink)}.cal-event--card[data-outcome=lose] .cal-event__score,.cal-event--cell[data-outcome=lose] .cal-event__score{color:var(--color-lose-ink)}.cal-event--card[data-outcome=win],.cal-event--cell[data-outcome=win]{background:var(--color-win-tint);border-color:var(--color-win-line)}.cal-event--card[data-outcome=lose],.cal-event--cell[data-outcome=lose]{background:var(--color-lose-tint);border-color:var(--color-lose-line)}.cal-event--card[data-outcome=cancelled],.cal-event--card[data-outcome=draw],.cal-event--cell[data-outcome=cancelled],.cal-event--cell[data-outcome=draw]{background:var(--color-surface-card)}.cal-event--card[data-outcome=cancelled] .cal-event__card-teams,.cal-event--cell[data-outcome=cancelled] .cal-event__opponent{color:var(--color-muted)}.cal-event--card{background:var(--color-paper);border:1px solid var(--color-line);border-radius:var(--radius-lg);display:grid;gap:10px;padding:12px 14px}.cal-event--card:hover{border-color:var(--color-ink)}.cal-event--card .cal-event__head{align-items:center;display:flex;gap:var(--space-2)}.cal-event--card .cal-event__time,.cal-event__place{font-size:var(--text-sm)}.cal-event__place{color:var(--color-muted);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-event__card-teams{align-items:center;display:grid;gap:var(--space-3);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.cal-event__team{align-items:center;display:flex;font-size:var(--text-lg);font-weight:700;gap:10px;min-width:0;white-space:nowrap}.cal-event__team:first-child{justify-content:flex-end}.cal-event__team img{flex:0 0 auto;height:38px;object-fit:contain;width:38px}.cal-event--card .cal-event__score{font-size:var(--text-2xl);letter-spacing:var(--tracking-title)}.cal-event--card .cal-event__vs{font-size:var(--text-sm)}.cal-event--card .cal-event__meta{text-align:center}.cal-event__photo{border-radius:var(--radius-sm);height:44px;margin-left:auto;object-fit:cover;width:44px}.cal-grid--week .cal-event--card{border-radius:var(--radius-md);gap:6px;padding:8px}.cal-grid--week .cal-event__card-teams{gap:4px;grid-template-columns:minmax(0,1fr);justify-items:start}.cal-grid--week .cal-event__team:first-child{flex-direction:row-reverse;justify-content:flex-end}.cal-grid--week .cal-event__team{font-size:var(--text-sm)}.cal-grid--week .cal-event__team img{height:24px;width:24px}.cal-grid--week .cal-event--card .cal-event__score{font-size:var(--text-md)}.cal-grid--week .cal-event--card .cal-event__meta{text-align:left;white-space:normal}.cal-grid--week .cal-event--card .cal-event__head{flex-wrap:wrap}.cal-grid--week .cal-event__place{flex-basis:100%;font-size:var(--text-xs)}.cal-agenda{display:grid;gap:var(--space-5)}.cal-agenda__day{display:grid;gap:var(--space-2);scroll-margin-top:calc(var(--header-height) + 16px)}.cal-agenda__date{align-items:baseline;border-bottom:1px solid var(--color-line);display:flex;gap:var(--space-2);padding-bottom:6px}.cal-agenda__date strong{color:var(--color-ink);font-size:var(--text-lg);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:-.02em}.cal-agenda__date span{color:var(--color-muted);font-size:var(--text-sm);font-weight:600}.cal-agenda__day.is-sunday .cal-agenda__date span{color:var(--color-error-ink)}.cal-agenda__day.is-saturday .cal-agenda__date span{color:var(--color-lose-ink)}.cal-agenda__date em{background:var(--cal-accent);border-radius:var(--radius-pill);color:var(--cal-on-accent);font-size:var(--text-xs);font-style:normal;font-weight:800;line-height:1;padding:4px 8px}.cal-agenda__events{display:grid;gap:var(--space-2)}.cal-agenda__empty{color:var(--color-muted);font-size:var(--text-base);padding:var(--space-3) 0}.cal-rail{display:grid;gap:var(--space-5);position:sticky;top:calc(var(--header-height) + var(--space-4))}.cal-rail section{border-top:1px solid var(--color-ink);display:grid;gap:var(--space-3);padding-top:var(--space-3)}.cal-rail h2{color:var(--color-ink);font-size:var(--text-base);font-weight:700}.cal-rates{display:grid;gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr));margin:0}.cal-rates dt{color:var(--color-muted);font-size:var(--text-sm)}.cal-rates dd{color:var(--color-ink);font-size:var(--text-xl);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:-.03em;margin:2px 0 0}.calendar-opponent-insight{color:var(--color-muted);font-size:var(--text-base);font-weight:500}.calendar-opponent-ranking{display:grid;gap:var(--space-2)}.calendar-opponent-ranking__list{display:grid}.calendar-opponent-ranking__entry{align-items:center;border-bottom:1px solid var(--color-line);display:grid;gap:10px;grid-template-columns:14px 26px minmax(0,1fr);padding:8px 0}.calendar-opponent-ranking__rank{color:var(--color-muted);font-size:var(--text-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700}.calendar-opponent-ranking__logo{height:26px;object-fit:contain;width:26px}.calendar-opponent-ranking__body{align-items:baseline;display:flex;gap:var(--space-2);justify-content:space-between;min-width:0}.calendar-opponent-ranking__team{color:var(--color-ink);font-size:var(--text-base);font-weight:700}.calendar-opponent-ranking__meta{align-items:baseline;display:flex;gap:var(--space-2);white-space:nowrap}.calendar-opponent-ranking__rate{color:var(--color-ink);font-size:var(--text-base);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:800}.calendar-opponent-ranking__record{color:var(--color-muted);font-size:var(--text-xs)}.calendar-opponent-ranking__toggle{background:none;border:0;color:var(--color-muted);font-size:var(--text-sm);font-weight:700;justify-self:start;min-height:32px;padding:0;text-decoration:underline;text-underline-offset:3px}.calendar-opponent-ranking__toggle:hover{color:var(--color-ink)}.opponent-ranking-modal{inset:0;position:fixed;z-index:1200}.opponent-ranking-modal__backdrop{background:rgba(10,14,22,.55);border:0;inset:0;position:absolute}.opponent-ranking-modal__panel{background:var(--color-paper);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);display:grid;gap:var(--space-3);left:50%;max-height:min(84vh,640px);max-width:min(92vw,420px);overflow-y:auto;padding:var(--space-5);position:absolute;top:50%;transform:translate(-50%,-50%);width:100%}.opponent-ranking-modal__head{align-items:center;display:flex;justify-content:space-between}.opponent-ranking-modal__head h3{color:var(--color-ink);font-size:var(--text-lg)}.opponent-ranking-modal__list{display:grid}@media (max-width:1100px){.cal-layout--with-rail{grid-template-columns:minmax(0,1fr)}.cal-rail{position:static}}@media (max-width:720px){.app-shell--calendar{gap:var(--space-3);padding-top:var(--space-4)}.cal-head{align-items:center;background:var(--color-canvas);flex-wrap:nowrap;gap:var(--space-2);margin:0 calc(var(--space-4) * -1);padding:8px var(--space-4);position:sticky;top:var(--header-height);z-index:5}.cal-head h1{font-size:1.5rem}.cal-head__nav button{min-width:44px}.cal-head__nav .cal-head__today{padding:0 12px}.cal-filters{gap:var(--space-2);padding-bottom:var(--space-3)}.cal-seg button{height:40px;padding:0 11px}.calendar-outcome-legend{flex:1 1 100%;flex-wrap:wrap;margin-left:0;min-width:0}.calendar-outcome-legend-item{background:var(--color-surface-card);height:36px;padding:0 10px}.calendar-outcome-legend-item.is-selected{background:var(--color-paper)}.cal-rates dd{font-size:var(--text-2xl)}}@media (prefers-reduced-motion:reduce){.cal-head__nav button{transition:none}}