/* Energy & offshore tender calendar (/radar/tenders) - yr/features/tenders.py.
   Dark, colourful, usable. The timeline scrolls sideways INSIDE .tc-scroll; the page itself never does. */
.tc-head h1 { max-width: 16em; }
.tc-preview { margin-left: .75em; padding: .15em .6em; border: 1px dashed var(--warn); border-radius: 99px; color: var(--warn); font-size: var(--fs-micro); letter-spacing: .04em; text-transform: uppercase; }
.tc-scope { margin-top: var(--s4); max-width: 46em; color: var(--fg-muted); font-size: var(--fs-small); }
.tc-head .cluster { margin-top: var(--s5); }
.tc-stale { margin: 0 0 var(--s6); padding: var(--s4) var(--s5); border: 1px solid var(--warn); border-left-width: 4px; border-radius: var(--r-sm); background: linear-gradient(90deg, rgb(255 200 87 / .14), transparent 70%), var(--sea-2); color: var(--foam); }

/* filters */
.tc-filters { display: grid; gap: var(--s3); margin-bottom: var(--s6); min-width: 0; }
.tc-filter { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; min-width: 0; }
.tc-filter__label { flex: 0 0 4.5rem; font-size: var(--fs-micro); letter-spacing: .08em; text-transform: uppercase; color: var(--fg-dim); }
.tc-chip { --c: var(--mist); display: inline-flex; align-items: center; gap: .4em; padding: .32em .8em; border: 1px solid var(--edge); border-radius: 99px; color: var(--foam); font-size: var(--fs-small); text-decoration: none; background: var(--sea-2); transition: border-color .15s, background .15s, transform .15s; }
.tc-chip:hover { border-color: var(--c); transform: translateY(-1px); }
.tc-chip.is-on { border-color: var(--c); background: color-mix(in srgb, var(--c) 20%, var(--sea-2)); box-shadow: 0 0 18px color-mix(in srgb, var(--c) 30%, transparent); }
.tc-chip--wind { --c: var(--k-wind); } .tc-chip--grid { --c: var(--k-grid); } .tc-chip--oil_gas { --c: var(--k-oilgas); }
.tc-chip--ccs_h2 { --c: var(--k-h2); } .tc-chip--lng_epc { --c: var(--k-lng); }
.tc-chip[class*="tc-chip--"]::before { content: ""; width: .55em; height: .55em; border-radius: 50%; background: var(--c); box-shadow: 0 0 8px var(--c); }
.tc-results[aria-busy="true"] { opacity: .55; transition: opacity .15s; }
.tc-empty { padding: var(--s6); border: 1px dashed var(--edge); border-radius: var(--r); }

/* timeline */
.tc-timeline { margin-bottom: var(--s8); min-width: 0; }
.tc-timeline h2, .tc-region h2, .tc-seq h2 { font-size: var(--fs-h3); letter-spacing: -.025em; margin: 0 0 var(--s4); }
.tc-legend { list-style: none; display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin: 0 0 var(--s4); padding: 0; font-size: var(--fs-micro); color: var(--fg-muted); }
.tc-legend li { display: inline-flex; align-items: center; gap: .45em; }
.tc-dot { width: .7em; height: .7em; border-radius: 50%; background: var(--c, var(--k-other)); box-shadow: 0 0 10px var(--c, var(--k-other)); }
.tc-dot--wind { --c: var(--k-wind); } .tc-dot--grid { --c: var(--k-grid); } .tc-dot--oil_gas { --c: var(--k-oilgas); }
.tc-dot--ccs_h2 { --c: var(--k-h2); } .tc-dot--lng_epc { --c: var(--k-lng); }
.tc-scroll { max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; border: 1px solid var(--line); border-radius: var(--r); padding: var(--s3); background: radial-gradient(40rem 18rem at 85% 0, rgb(157 140 255 / .13), transparent 70%), radial-gradient(34rem 16rem at 10% 100%, rgb(56 225 214 / .1), transparent 70%), var(--sea-2); box-shadow: var(--hi), var(--lift); }
.tc-scroll:focus-visible { outline: 2px solid var(--pro); outline-offset: 2px; }
.tc-lane { margin-bottom: var(--s4); min-width: 0; }
.tc-lane > summary { cursor: pointer; list-style: none; display: flex; align-items: center; gap: .6em; padding: .5rem .2rem; font-size: var(--fs-micro); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--foam); }
.tc-lane > summary::-webkit-details-marker { display: none; }
.tc-lane > summary::before { content: ""; width: .5em; height: .5em; border-right: 2px solid var(--pro); border-bottom: 2px solid var(--pro); transform: rotate(-45deg); transition: transform .15s; }
.tc-lane[open] > summary::before { transform: rotate(45deg); }
.tc-lane > summary:focus-visible { outline: 2px solid var(--pro); outline-offset: 2px; border-radius: var(--r-sm); }
.tc-hint { margin-top: var(--s3); font-size: var(--fs-micro); color: var(--fg-dim); max-width: 60em; }
.tl { display: block; width: 100%; min-width: 60rem; height: auto; font-family: var(--font); }
.tl text { fill: var(--mist); font-size: 12px; }
.tl .tl-year { fill: var(--foam); font-size: 15px; font-weight: 600; text-anchor: middle; letter-spacing: .02em; }
.tl .tl-q { fill: var(--haze); font-size: 10.5px; text-anchor: middle; letter-spacing: .08em; }
.tl-qline { stroke: var(--sea-rule); stroke-width: 1; stroke-dasharray: 2 5; }
.tl-yline { stroke: var(--rule); stroke-width: 1; }
.tl-region rect { fill: rgb(255 255 255 / .05); }
.tl-region text { fill: var(--foam); font-size: 11.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
.tl-hit { fill: transparent; }
.tl-hit--alt { fill: rgb(255 255 255 / .018); }
.tl-row:hover .tl-hit, .tl-row:focus .tl-hit { fill: rgb(255 255 255 / .07); }
.tl-row:hover .tl-name, .tl-row:focus .tl-name { fill: var(--pro-hi); }
.tl-row { outline: none; }
.tl .tl-name { fill: var(--foam); font-size: 12.5px; }
.tl .tl-cc { fill: var(--haze); font-size: 10.5px; text-anchor: end; }
.tl .tl-none { fill: var(--haze); font-size: 10.5px; font-style: italic; }
.tl-k--wind { --c: var(--k-wind); } .tl-k--grid { --c: var(--k-grid); } .tl-k--oil_gas { --c: var(--k-oilgas); }
.tl-k--ccs_h2 { --c: var(--k-h2); } .tl-k--lng_epc { --c: var(--k-lng); } .tl-k--other { --c: var(--k-other); }
.tl-bar { fill: var(--c); filter: drop-shadow(0 0 5px color-mix(in srgb, var(--c) 65%, transparent)); transform-box: fill-box; transform-origin: left center; animation: tc-grow .7s cubic-bezier(.2, .8, .2, 1) both; }
.tl-bar--period { fill: color-mix(in srgb, var(--c) 16%, transparent); stroke: var(--c); stroke-width: 1.4; stroke-dasharray: 4 3; filter: none; }
.tl-span { fill: color-mix(in srgb, var(--c) 40%, transparent); }
.tl-award { fill: var(--c); stroke: var(--sea); stroke-width: 1.5; filter: drop-shadow(0 0 6px var(--c)); animation: tc-pop .5s .35s cubic-bezier(.2, .8, .2, 1) both; transform-box: fill-box; transform-origin: center; }
.tl-award--period { fill: var(--sea-2); stroke: var(--c); stroke-width: 1.8; filter: none; }
.tl-today line { stroke: var(--flare); stroke-width: 1.5; }
.tl-today circle { fill: var(--flare); animation: tc-pulse 2.4s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
.tl .tl-today text { fill: var(--flare-hi); font-size: 11px; font-weight: 600; }
@keyframes tc-grow { from { transform: scaleX(0); opacity: 0; } to { transform: scaleX(1); opacity: 1; } }
@keyframes tc-pop { from { transform: scale(0); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@keyframes tc-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.7); opacity: .55; } }
@media (prefers-reduced-motion: reduce) { .tl-bar, .tl-award, .tl-today circle { animation: none; } .tc-chip { transition: none; } }

.tc-jump { display: none; margin: 0 0 var(--s4); }

/* cards */
.tc-region { margin-bottom: var(--s8); min-width: 0; }
.tc-coverage { margin: 0 0 var(--s5); max-width: 60em; font-size: var(--fs-small); color: var(--fg-muted); }
.tc-cards { display: grid; gap: var(--s4); grid-template-columns: repeat(auto-fill, minmax(min(100%, 21rem), 1fr)); }
.tc-card { --c: var(--k-other); position: relative; min-width: 0; padding: var(--s5); border: 1px solid var(--line); border-radius: var(--r); background: linear-gradient(180deg, color-mix(in srgb, var(--c) 9%, transparent), transparent 9rem), var(--surface); box-shadow: var(--hi); overflow-wrap: anywhere; scroll-margin-top: 6rem; }
.tc-card::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; border-radius: var(--r) 0 0 var(--r); background: var(--c); box-shadow: 0 0 14px var(--c); }
.tc-card:target { border-color: var(--c); box-shadow: 0 0 0 1px var(--c), 0 0 34px color-mix(in srgb, var(--c) 35%, transparent); }
.tc-card--wind { --c: var(--k-wind); } .tc-card--grid { --c: var(--k-grid); } .tc-card--oil_gas { --c: var(--k-oilgas); }
.tc-card--ccs_h2 { --c: var(--k-h2); } .tc-card--lng_epc { --c: var(--k-lng); }
.tc-card__chips { display: flex; flex-wrap: wrap; gap: .4rem; margin: 0 0 var(--s3); }
.tc-card h3 { font-size: 1.1875rem; line-height: 1.2; letter-spacing: -.015em; margin: 0; }
.tc-card__where { margin: .3rem 0 0; font-size: var(--fs-micro); color: var(--fg-dim); }
.tc-status { text-transform: capitalize; }
.tc-status--open { color: var(--ok); border-color: rgb(74 222 154 / .5); background: rgb(74 222 154 / .1); }
.tc-status--announced { color: var(--blue); border-color: rgb(91 157 255 / .5); background: rgb(91 157 255 / .1); }
.tc-status--closed { color: var(--mist); }
.tc-status--awarded { color: var(--pro-hi); border-color: rgb(56 225 214 / .5); background: rgb(56 225 214 / .1); }
.tc-status--postponed { color: var(--warn); border-color: rgb(255 200 87 / .5); background: rgb(255 200 87 / .1); }
.tc-status--cancelled { color: var(--bad); border-color: rgb(255 107 122 / .5); background: rgb(255 107 122 / .1); }
.tc-facts { display: grid; grid-template-columns: 1fr 1fr; gap: var(--s3) var(--s4); margin: var(--s4) 0; }
.tc-facts div { min-width: 0; }
.tc-facts dt { font-size: var(--fs-micro); letter-spacing: .06em; text-transform: uppercase; color: var(--fg-dim); }
.tc-facts dd { margin: .15rem 0 0; font-variant-numeric: tabular-nums; color: var(--foam); }
.tc-card .np, .tc-facts .np { color: var(--haze); font-style: italic; }
.tc-note { margin: 0 0 var(--s4); color: var(--fg-muted); font-size: var(--fs-small); }
.tc-links { margin: 0 0 var(--s4); font-size: var(--fs-small); }
.tc-src { padding-top: var(--s3); border-top: 1px solid var(--line-soft); font-size: var(--fs-micro); }
.tc-src h4 { margin: 0 0 .3rem; font-size: var(--fs-micro); letter-spacing: .06em; text-transform: uppercase; color: var(--fg-dim); font-weight: 500; }
.tc-sources { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.tc-src-meta { display: block; color: var(--fg-dim); }
.tc-checked { margin: .5rem 0 0; color: var(--fg-dim); }
.tc-seq { margin: var(--s8) 0; max-width: 60em; }
.tc-seq ul { margin: var(--s4) 0 0; padding-left: 1.1em; display: grid; gap: .5rem; color: var(--fg-muted); font-size: var(--fs-small); }
.tc-seq strong { color: var(--foam); font-weight: 600; }

@media (max-width: 40rem) {
  .tc-filter__label { flex-basis: 100%; }
  .tc-timeline { order: 2; }
  .tc-jump { display: block; order: 0; }
  .tc-results { display: flex; flex-direction: column; }   /* cards first on a phone, timeline after them */
  .tc-results > .tc-region { order: 1; }
  .tc-facts { grid-template-columns: 1fr; }
}
@media print { .tc-filters, .tc-scroll { display: none; } }
