/* Z-130 — календарь поездки (partials/calendar.j2, static/js/calendar.js): HUD «время» секции .voyage рядом со шкалой миль.
   Язык плиты в токенах C: стоянка — кольцо (точка стоянки), переход — водная подложка, ночной переход — navy (ночные плечи),
   вылет домой — самолёт. Текущий день — охра, единственный яркий акцент. Чернила — из .voyage[data-tone] (тон главы). */
.tcal{--cell:clamp(30px,2.3vw,38px);--now:#e0ae58;--water:var(--plate-shallow);color:var(--ink);font-family:var(--font-text)}
.tcal-now{margin:0 0 6px;min-height:1.45em;font-size:1rem;font-weight:600;line-height:1.45;font-variant-numeric:lining-nums tabular-nums}
/* статичный режим: подписи-статуса нет, но узел остаётся в дереве доступности (role=status не прячется display:none) */
.tcal:not(.is-live) .tcal-now{position:absolute;width:1px;height:1px;min-height:0;margin:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.tcal-grid{border-collapse:separate;border-spacing:0;table-layout:fixed}
.tcal-grid th,.tcal-grid td{position:relative;width:var(--cell);height:var(--cell);padding:0;text-align:center;vertical-align:middle}
.tcal-grid thead th,.tcal-grid thead td{height:auto;padding:0 0 3px;font-size:.72rem;font-weight:600;letter-spacing:.06em;color:var(--muted)}
.tcal-grid .tcal-m{width:3.1em;padding-right:6px;font-size:.72rem;font-weight:600;letter-spacing:.04em;color:var(--muted);text-align:right}

.tcal-mw{display:none}                /* месяц(ы) недели — только в компактном режиме */
/* клетка: чип дня (квадрат со скруглением; стоянка — кольцо) */
.tcal-grid td a,.tcal-grid td .n{font-variant-numeric:lining-nums tabular-nums}
.tcal-grid td a{position:relative;display:grid;place-items:center;width:calc(var(--cell) - 6px);height:calc(var(--cell) - 6px);margin:0 auto 3px;
  border-radius:7px;color:var(--ink);font-size:max(.84rem,calc(var(--cell) * .34));font-weight:500;text-decoration:none}
.tcal-grid td.out .n{display:block;font-size:.8rem;color:var(--muted);opacity:.4;margin-bottom:3px}
.tcal .k-sea a,.tcal .k-sea .tcal-sw{background:var(--water);color:#131110;box-shadow:inset 0 0 0 1px rgba(0,92,115,.3)}
.tcal .k-night a,.tcal .k-night .tcal-sw{background:var(--navy);color:var(--ink-on-navy)}
.tcal .k-port a,.tcal .k-port .tcal-sw{border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--ink)}
.tcal .k-home a{color:var(--ink)}
.tcal-plane{position:absolute;top:1px;right:1px;width:10px;height:10px;fill:currentColor}
.voyage[data-tone=navy] .tcal .k-night a,.voyage[data-tone=navy] .tcal .k-night .tcal-sw{background:var(--navy-soft);box-shadow:inset 0 0 0 1px var(--line)}
.voyage[data-tone=dark] .tcal .k-night a,.voyage[data-tone=dark] .tcal .k-night .tcal-sw{box-shadow:inset 0 0 0 1px var(--line)}
.tcal-grid td a:hover{text-decoration:underline;text-underline-offset:2px}
.tcal-grid td a:focus-visible{outline:2px dashed var(--ink);outline-offset:2px}

/* легенда — только в статичном режиме */
.tcal-legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0 0;padding:0;list-style:none;font-size:.85rem;color:var(--muted)}
.tcal-legend li{display:inline-flex;align-items:center;gap:7px}
.tcal-sw{position:relative;display:inline-block;width:16px;height:16px;border-radius:4px}
.tcal-legend .k-home .tcal-sw .tcal-plane{inset:0;width:16px;height:16px;fill:var(--ink)}
.tcal.is-live .tcal-legend{display:none}

/* живой режим (pin + scrub): прошедшие — «отмечены» (чип бледнее, косая черта), текущий — охра, скобка плеча под днями */
.tcal.is-live .is-past a{font-weight:400}
.tcal.is-live .k-sea.is-past a{background:color-mix(in srgb,var(--water) 35%,transparent);color:var(--ink)}
.tcal.is-live .k-night.is-past a{background:color-mix(in srgb,var(--navy) 35%,transparent);color:var(--ink)}
.tcal.is-live .k-port.is-past a{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--ink) 40%,transparent)}
.tcal.is-live .is-past a::after{content:"";position:absolute;left:18%;right:18%;top:50%;border-top:1px solid var(--muted);transform:rotate(-38deg);opacity:.8}
.tcal.is-live .is-now a{outline:3px solid var(--now);outline-offset:1px;font-weight:800}
.tcal.is-live .in-leg::before{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;border-bottom:1.5px solid var(--muted);pointer-events:none}
.tcal.is-live .in-leg.leg-a::before,.tcal.is-live tr>.in-leg:nth-child(2)::before{left:3px;border-left:1.5px solid var(--muted)}
.tcal.is-live .in-leg.leg-b::before,.tcal.is-live tr>.in-leg:last-child::before{right:3px;border-right:1.5px solid var(--muted)}

/* место в секции: статично — под вступлением (первым в .voyage-body, над плитой), один раз на секцию */
.voyage-body>.tcal{margin:0 0 clamp(24px,3.5vw,44px)}
@media (min-width:900px){
  /* pin: правая колонка — календарь сразу под шкалой миль, под ним карточка главы; плита — на обе строки */
  .is-pinned .voyage-body:has(>.tcal){grid-template-rows:auto minmax(0,1fr);row-gap:clamp(10px,1.6vh,20px)}
  .is-pinned .voyage-body>.voyage-plate{grid-column:1;grid-row:1 / span 2}
  .is-pinned .voyage-body>.tcal{grid-column:2;grid-row:1;margin:0;--cell:clamp(26px,3.3vh,46px)}
  .is-pinned .tcal-now{font-size:max(1rem,calc(var(--cell) * .42))}
  .is-pinned .voyage-body>.voyage-chapters{grid-column:2;grid-row:2}
}
/* низкий экран под pin: только текущая неделя + подпись */
@media (min-width:900px) and (max-height:819px){
  .is-pinned .tcal.is-live tbody tr:not(.is-week){display:none}
  .is-pinned .tcal.is-live .tcal-mf{display:none}
  .is-pinned .tcal.is-live .tcal-mw{display:inline}
  .is-pinned .tcal.is-live .tcal-m{width:auto;white-space:nowrap}
}
