/* Customer portal (portal.*) and vendor portal (vendor.*): layout, sign-in pages and the
   shared portal components (cards, tables, status badges, files). Builds on the theme tokens. */

body.ext { background: var(--c-paper-2); color: var(--c-text-dark); padding-bottom: 0; display: flex; flex-direction: column; min-height: 100vh; }
.ext-main { flex: 1 0 auto; }

/* ---------- Header ---------- */
.ext-header { background: var(--c-ink); color: var(--c-text); border-bottom: 3px solid var(--c-brand); }
.ext-header__inner { display: flex; align-items: center; justify-content: space-between; gap: 12px 20px; flex-wrap: wrap; min-height: 72px; padding-top: 10px; padding-bottom: 10px; }
.ext-brand { display: inline-flex; align-items: center; gap: 14px; text-decoration: none; min-width: 0; }
.ext-brand__logo { width: 132px; height: auto; }
.ext-brand__site { font-family: var(--f-display); font-weight: 600; font-size: 1rem; letter-spacing: .04em; text-transform: uppercase; color: var(--c-accent); border-left: 1px solid var(--c-line); padding-left: 14px; white-space: nowrap; }
.no-uppercase .ext-brand__site { text-transform: none; letter-spacing: 0; }
.ext-header__actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ext-home, .ext-logout__btn {
  display: inline-flex; align-items: center; gap: 8px; min-height: var(--tap); padding: 8px 14px;
  border: 1px solid var(--c-line); background: transparent; color: var(--c-text); text-decoration: none;
  font-size: .9375rem; font-weight: 600; cursor: pointer; transition: border-color var(--t-fast), background-color var(--t-fast);
}
.ext-home:hover, .ext-logout__btn:hover { border-color: var(--c-accent); background: var(--c-ink-2); }
.ext-logout { margin: 0; }
.ext-header .lang-menu__toggle { min-height: var(--tap); }
@media (max-width: 599px) {
  .ext-brand__logo { width: 112px; }
  .ext-brand__site { font-size: .875rem; padding-left: 10px; }
  .ext-home span, .ext-logout__btn span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .ext-home, .ext-logout__btn { padding: 8px 12px; }
}

/* Navigation of a signed-in account */
.ext-nav { background: var(--c-ink-2); border-top: 1px solid var(--c-line); }
.ext-nav__inner { display: flex; align-items: center; justify-content: space-between; gap: 8px 24px; flex-wrap: wrap; }
.ext-nav__list { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: thin; }
.ext-nav__link { display: inline-flex; align-items: center; gap: 8px; min-height: 52px; padding: 0 14px; color: var(--c-text-2); text-decoration: none; font-weight: 600; font-size: .9375rem; white-space: nowrap; border-bottom: 3px solid transparent; }
.ext-nav__link:hover { color: var(--c-text); }
.ext-nav__link[aria-current="page"] { color: var(--c-text); border-bottom-color: var(--c-accent); }
.ext-nav__who { margin: 0; font-size: .875rem; color: var(--c-text-2); padding: 8px 0; }
.ext-nav__company { color: var(--c-text); font-weight: 600; }

/* Notices */
.ext-notices { padding-top: 20px; }
.ext-notice { margin: 0 0 12px; padding: 14px 18px; border-left: 4px solid var(--c-accent-dark); background: var(--c-paper); color: var(--c-text-dark); font-weight: 500; }
.ext-notice--success { border-left-color: #1F7A4D; background: #EEF7F1; }
.ext-notice--error { border-left-color: #A3261A; background: #FDF1EF; }
.ext-notice--info { border-left-color: var(--c-ink-3); }

/* ---------- Sign-in pages ---------- */
.ext-auth { padding: 32px 0 56px; }
.ext-auth__inner { display: grid; gap: 0; grid-template-columns: 1fr; max-width: 1080px; }
.ext-auth__aside {
  background-color: var(--c-ink);
  background-image: repeating-linear-gradient(135deg, rgba(255, 255, 255, .035) 0 2px, transparent 2px 22px), linear-gradient(160deg, var(--c-ink-3) 0%, var(--c-ink) 70%);
  color: var(--c-text); padding: 32px 24px; border-top: 4px solid var(--c-brand);
}
.ext-auth__claim { font-size: clamp(1.75rem, 4vw, 2.5rem); line-height: 1.05; margin-bottom: 16px; max-width: 16ch; }
.ext-auth__lead { color: var(--c-text-2); max-width: 46ch; }
.ext-auth__points { display: grid; gap: 14px; margin: 24px 0; }
.ext-auth__points li { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 12px; align-items: center; }
.ext-auth__icon { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border: 1px solid var(--c-line); color: var(--c-accent); }
.ext-auth__secure { display: flex; gap: 8px; align-items: center; margin: 0; font-size: .875rem; color: var(--c-text-2); border-top: 1px solid var(--c-line); padding-top: 16px; }
.ext-auth__card { margin: 0; }
@media (min-width: 900px) {
  .ext-auth { padding: 56px 0 80px; }
  .ext-auth__inner { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); }
  .ext-auth__aside { padding: 48px 40px; border-top: 0; border-left: 4px solid var(--c-brand); }
  .ext-auth--wide .ext-auth__inner { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); max-width: 1200px; }
}
@media (max-width: 899px) {
  .ext-auth__points, .ext-auth__secure { display: none; }
  .ext-auth__aside { padding: 24px; }
  .ext-auth__claim { font-size: 1.625rem; }
}

/* ---------- Cards and forms ---------- */
.ext-card { background: var(--c-paper); color: var(--c-text-dark); padding: 28px 24px; box-shadow: 0 1px 2px rgba(11, 26, 48, .08), 0 8px 24px rgba(11, 26, 48, .06); }
@media (min-width: 600px) { .ext-card { padding: 40px; } }
.ext-card__title { font-size: 1.625rem; margin-bottom: 8px; color: var(--c-ink); }
.ext-card__lead { color: var(--c-text-dark-2); margin-bottom: 24px; }
.ext-card__foot { margin-top: 28px; padding-top: 20px; border-top: 1px solid #E3DFD5; }
.ext-card__foot p { margin-bottom: 12px; color: var(--c-text-dark-2); }
.ext-card__foot a:not(.btn) { color: var(--c-brand-dark); font-weight: 600; }
.ext-card__cta { width: 100%; }
.ext-form { display: grid; gap: 18px; }
.ext-form .field__control { width: 100%; min-height: 48px; }
.ext-form__submit { width: 100%; margin-top: 4px; }
.ext-form__submit[aria-disabled="true"] { opacity: .7; cursor: progress; }
.ext-form__aside { margin: -6px 0 0; text-align: end; font-size: .9375rem; }
.ext-form__aside a { color: var(--c-brand-dark); font-weight: 600; }
.ext-field__hint { margin: 0; font-size: .8125rem; color: var(--c-text-dark-2); }
.ext-fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.ext-fieldset__legend { font-family: var(--f-display); font-weight: 600; font-size: 1.0625rem; text-transform: uppercase; letter-spacing: .03em; color: var(--c-ink); margin-bottom: 12px; padding: 0; }
.no-uppercase .ext-fieldset__legend { text-transform: none; letter-spacing: 0; }
.ext-grid { display: grid; gap: 16px 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.ext-password { position: relative; }
.ext-password .field__control { padding-inline-end: 84px; }
.ext-password__toggle { position: absolute; inset-inline-end: 4px; top: 4px; bottom: 4px; padding: 0 12px; border: 0; background: var(--c-paper-2); color: var(--c-ink); font-size: .8125rem; font-weight: 700; cursor: pointer; }
.ext-password__toggle:hover { background: #E8E2D4; }
.ext-checks { display: grid; gap: 8px 16px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr)); }
.ext-check { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: start; padding: 10px 12px; border: 1px solid #E3DFD5; background: var(--c-paper); cursor: pointer; }
.ext-check:hover { border-color: var(--c-ink-3); }
.ext-check input { width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--c-ink); }
.ext-check__code { display: block; font-size: .75rem; color: var(--c-text-dark-2); font-weight: 600; letter-spacing: .04em; }

/* ---------- Dashboard ---------- */
.ext-hero { background: var(--c-ink); color: var(--c-text); }
.ext-hero__inner { padding-top: 40px; padding-bottom: 44px; }
.ext-hero__title { font-size: clamp(1.875rem, 5vw, 3rem); line-height: 1.05; margin-bottom: 12px; }
.ext-hero__lead { color: var(--c-text-2); max-width: 64ch; margin: 0; }
.ext-hero--compact .ext-hero__inner { padding-top: 32px; padding-bottom: 32px; }
.ext-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 20px; }
.ext-section { background: var(--c-paper-2); padding: 40px 0 64px; }
.ext-section__more { margin: 24px 0 0; }
.ext-section__more a { color: var(--c-brand-dark); font-weight: 600; }
.ext-cards { display: grid; gap: 20px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); }
.ext-tile { display: flex; flex-direction: column; background: var(--c-paper); padding: 24px; border-top: 3px solid var(--c-ink); box-shadow: 0 1px 2px rgba(11, 26, 48, .06); }
.ext-tile__head { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 16px; }
.ext-tile__icon { display: inline-flex; width: 48px; height: 48px; align-items: center; justify-content: center; background: var(--c-paper-2); color: var(--c-brand); }
.ext-tile__value { font-family: var(--f-display); font-size: 2.25rem; font-weight: 700; line-height: 1; color: var(--c-ink); }
.ext-tile__title { font-size: 1.25rem; color: var(--c-ink); }
.ext-tile__text { color: var(--c-text-dark-2); flex: 1 0 auto; }
.ext-tile__action { align-self: flex-start; }
.ext-empty { background: var(--c-paper); padding: 32px; text-align: center; color: var(--c-text-dark-2); }
.ext-columns { display: grid; gap: 24px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); align-items: start; }
.ext-dl { display: grid; grid-template-columns: minmax(110px, auto) minmax(0, 1fr); gap: 8px 16px; margin: 0 0 16px; }
.ext-dl dt { color: var(--c-text-dark-2); font-size: .875rem; }
.ext-dl dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }

/* ---------- Lists, tables, badges, files (Rfq, Procurement) ---------- */
.ext-toolbar { display: flex; flex-wrap: wrap; gap: 12px 16px; justify-content: space-between; align-items: end; margin-bottom: 20px; }
.ext-filters { display: flex; flex-wrap: wrap; gap: 12px; align-items: end; }
.ext-filters .field__control { min-height: 44px; }
.ext-table-wrap { overflow-x: auto; background: var(--c-paper); box-shadow: 0 1px 2px rgba(11, 26, 48, .06); }
.ext-table { width: 100%; border-collapse: collapse; font-size: .9375rem; }
.ext-table th, .ext-table td { padding: 14px 16px; text-align: start; border-bottom: 1px solid #ECE8DE; vertical-align: top; }
.ext-table thead th { background: var(--c-ink); color: var(--c-text); font-size: .8125rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; }
.no-uppercase .ext-table thead th { text-transform: none; letter-spacing: 0; }
.ext-table tbody tr:hover { background: #FBFAF6; }
.ext-table a:not(.btn) { color: var(--c-ink); font-weight: 700; }
.ext-table__sub { display: block; color: var(--c-text-dark-2); font-size: .8125rem; font-weight: 400; }
.ext-table__num { text-align: end; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ext-badge { display: inline-block; padding: 3px 10px; font-size: .8125rem; font-weight: 700; background: #ECE8DE; color: var(--c-ink); white-space: nowrap; }
.ext-badge--submitted, .ext-badge--open, .ext-badge--pending { background: #FFF4D6; color: #6B4E0B; }
.ext-badge--in_review, .ext-badge--shortlisted { background: #E3ECF8; color: #1B3D6E; }
.ext-badge--quoted, .ext-badge--awarded, .ext-badge--active, .ext-badge--approved { background: #E2F3E9; color: #17603C; }
.ext-badge--closed, .ext-badge--withdrawn, .ext-badge--cancelled, .ext-badge--rejected, .ext-badge--lost, .ext-badge--disabled { background: #EEEEEE; color: #4A5568; }
.ext-badge--auction { background: var(--c-brand); color: #fff; }
.ext-detail { display: grid; gap: 24px; grid-template-columns: 1fr; align-items: start; }
@media (min-width: 1024px) { .ext-detail { grid-template-columns: minmax(0, 2fr) minmax(300px, 1fr); } }
.ext-detail__side { display: grid; gap: 24px; }
.ext-prose { white-space: pre-line; }
.ext-files { display: grid; gap: 8px; margin: 0; }
.ext-files a { display: inline-flex; gap: 8px; align-items: center; color: var(--c-ink); font-weight: 600; }
.ext-files__size { color: var(--c-text-dark-2); font-weight: 400; font-size: .8125rem; }
.ext-file-list { margin: 8px 0 0; padding-inline-start: 1.2em; list-style: disc; font-size: .875rem; color: var(--c-text-dark-2); }
.ext-file-input { padding: 10px; border: 1px dashed #B9B2A3; background: var(--c-paper-2); width: 100%; }
.ext-steps { display: grid; gap: 0 4px; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 0 8px; padding: 0; list-style: none; }
.ext-steps + .ext-field__hint { margin: 0 0 24px; }
@media (max-width: 520px) { .ext-steps li { font-size: .75rem; padding-inline: 2px; } }
.ext-steps li { position: relative; padding: 12px 8px 0; border-top: 4px solid #DDD6C6; font-size: .8125rem; font-weight: 600; color: var(--c-text-dark-2); }
.ext-steps li.is-done { border-top-color: var(--c-ink); color: var(--c-ink); }
.ext-steps li.is-current { border-top-color: var(--c-brand); color: var(--c-brand-dark); }
.ext-figure { font-family: var(--f-display); font-size: 2rem; font-weight: 700; color: var(--c-ink); line-height: 1.1; margin: 0; }
.ext-figure__label { font-size: .8125rem; color: var(--c-text-dark-2); margin: 0 0 4px; font-weight: 600; }
.ext-countdown { display: inline-flex; gap: 6px; align-items: center; font-weight: 700; color: var(--c-brand-dark); }
.ext-pager { display: flex; gap: 8px; justify-content: center; margin-top: 24px; }
.ext-pager a, .ext-pager span { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; justify-content: center; background: var(--c-paper); color: var(--c-ink); text-decoration: none; font-weight: 600; }
.ext-pager [aria-current="page"] { background: var(--c-ink); color: var(--c-text); }

/* ---------- Footer ---------- */
.ext-footer { background: var(--c-ink); color: var(--c-text-2); font-size: .875rem; }
.ext-footer__inner { display: flex; flex-wrap: wrap; gap: 8px 24px; justify-content: space-between; align-items: center; padding-top: 20px; padding-bottom: 20px; }
.ext-footer p { margin: 0; }
.ext-footer__links { display: flex; flex-wrap: wrap; gap: 4px 20px; }
.ext-footer a { color: var(--c-text); text-decoration: none; display: inline-flex; min-height: var(--tap); align-items: center; }
.ext-footer a:hover { text-decoration: underline; }

/* Category landing (vendor registration) */
.ext-groups { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 270px), 1fr)); align-items: start; }
.ext-group { background: var(--c-paper); padding: 24px; border-top: 3px solid var(--c-accent-dark); }
.ext-group__title { font-size: 1.125rem; color: var(--c-ink); display: flex; gap: 10px; align-items: center; }
.ext-group__title .icon { color: var(--c-brand); flex: none; }
.ext-group__list { display: grid; gap: 6px; margin: 12px 0 0; }
.ext-group__list li { display: flex; gap: 8px; align-items: baseline; font-size: .9375rem; }
.ext-group__list li::before { content: ''; flex: none; width: 6px; height: 6px; background: var(--c-accent-dark); transform: translateY(-2px); }

/* ---------- Procurement (vendor.*) ---------- */
.proc-hero__inner { display: grid; gap: 32px; align-items: end; }
@media (min-width: 900px) { .proc-hero__inner { grid-template-columns: minmax(0, 1fr) auto; padding-top: 56px; padding-bottom: 56px; } }
.proc-hero__facts { display: flex; gap: 12px; margin: 0; }
.proc-hero__facts li { display: grid; gap: 4px; min-width: 140px; padding: 16px 20px; border: 1px solid var(--c-line); border-top: 3px solid var(--c-accent); }
.proc-hero__facts strong { font-family: var(--f-display); font-size: 2.5rem; line-height: 1; color: var(--c-text); }
.proc-hero__facts span { font-size: .8125rem; color: var(--c-text-2); }
.proc-heading { font-size: clamp(1.5rem, 3vw, 2rem); color: var(--c-ink); margin: 0 0 20px; }
.proc-heading--sm { font-size: 1.25rem; margin: 32px 0 12px; }
.proc-lead { color: var(--c-text-dark-2); max-width: 70ch; margin: -8px 0 12px; }
.proc-sample { font-size: .875rem; color: var(--c-brand-dark); font-weight: 600; margin: 0 0 20px; }
.proc-benefits { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); margin: 0 0 48px; }
.proc-benefit { background: var(--c-paper); padding: 24px; border-top: 3px solid var(--c-brand); }
.proc-benefit .ext-tile__icon { margin-bottom: 16px; }
.proc-steps { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); margin: 0; padding: 0; list-style: none; }
.proc-step { position: relative; padding: 20px 20px 20px 72px; background: var(--c-paper); min-height: 96px; }
.proc-step p { margin: 0; color: var(--c-text-dark-2); font-size: .9375rem; }
.proc-step__no { position: absolute; left: 20px; top: 20px; width: 36px; height: 36px; display: grid; place-items: center; background: var(--c-ink); color: var(--c-text); font-family: var(--f-display); font-weight: 700; font-size: 1.125rem; }
.proc-step__title { font-size: 1.0625rem; color: var(--c-ink); margin: 0 0 4px; }
.proc-catalog { padding: 56px 0; }
.proc-group__lead { color: var(--c-text-dark-2); font-size: .9375rem; margin: 8px 0 0; }
.proc-register__inner { max-width: 960px; }
.proc-checks__title { display: flex; gap: 8px; align-items: center; font-size: 1rem; color: var(--c-ink); margin: 20px 0 10px; }
.proc-checks__title .icon { color: var(--c-brand); }
.ext-fieldset.is-invalid .ext-check { border-color: var(--c-brand); }
.proc-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 8px; }
.proc-chip { display: inline-block; padding: 4px 12px; background: var(--c-paper); border: 1px solid #E3DFD5; font-size: .8125rem; font-weight: 600; color: var(--c-ink); }
.proc-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; color: var(--c-text-2); font-size: .9375rem; margin: 0 0 12px; }
.ext-hero .eyebrow a { color: inherit; }
.proc-main { display: grid; gap: 24px; min-width: 0; }
.proc-subhead { font-size: 1rem; color: var(--c-ink); margin: 24px 0 8px; text-transform: uppercase; letter-spacing: .03em; font-family: var(--f-display); }
.proc-withdraw { margin-top: 16px; }
.proc-deadline { border-top: 4px solid var(--c-brand); }
.proc-figures { display: grid; gap: 16px; grid-template-columns: 1fr 1fr; }
.proc-figure--sm { font-size: 1.5rem; }
.proc-standing { background: var(--c-ink); color: var(--c-text); }
.proc-standing .ext-card__title, .proc-standing .ext-figure { color: var(--c-text); }
.proc-standing .ext-figure__label { color: var(--c-text-2); }
.proc-buyer__name { font-weight: 700; font-size: 1.125rem; margin: 0; color: var(--c-ink); }
.proc-contact { display: grid; gap: 8px; margin: 12px 0 0; }
.proc-contact li { display: flex; gap: 8px; align-items: center; }
.proc-contact a { color: var(--c-brand-dark); font-weight: 600; overflow-wrap: anywhere; }
.ext-badge--superseded, .ext-badge--not_selected, .ext-badge--draft { background: #EEEEEE; color: #4A5568; }
.ext-badge--not_answered { background: #FFF4D6; color: #6B4E0B; }
.proc-open { background: var(--c-paper); }
.proc-table__title { margin-top: 28px; }
.proc-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 4px; }
.proc-filter[hidden] { display: none; }
.proc-filter__chip { display: inline-flex; gap: 8px; align-items: center; min-height: 44px; padding: 0 14px; background: var(--c-white, #fff); border: 1px solid #DAD5C8; color: var(--c-ink); font: inherit; font-size: .9375rem; font-weight: 600; cursor: pointer; }
.proc-filter__chip .icon { color: var(--c-brand); }
.proc-filter__chip:hover { border-color: var(--c-ink); }
.proc-filter__chip.is-active { background: var(--c-ink); border-color: var(--c-ink); color: var(--c-text); }
.proc-filter__chip.is-active .icon { color: var(--c-accent); }
.proc-filter__chip.is-active .proc-count { background: var(--c-brand); }
.proc-filter__chip:focus-visible { outline: 3px solid var(--c-accent); outline-offset: 2px; }
.proc-table__block[hidden] { display: none; }
.proc-demo { display: inline-block; margin-inline-start: 6px; padding: 0 6px; border: 1px solid var(--c-brand); color: var(--c-brand-dark); font-size: .6875rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; vertical-align: 1px; }
.proc-eval { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); margin: 0 0 48px; padding: 0; list-style: none; }
.proc-eval li { display: grid; grid-template-columns: auto 1fr; gap: 4px 14px; padding: 18px 20px; background: var(--c-paper); border-inline-start: 3px solid var(--c-accent); }
.proc-eval .icon { grid-row: span 2; color: var(--c-brand); margin-top: 2px; }
.proc-eval h3 { margin: 0; font-size: 1.0625rem; color: var(--c-ink); }
.proc-eval p { margin: 0; color: var(--c-text-dark-2); font-size: .9375rem; }
.proc-reviewers { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); margin: 0; padding: 0; list-style: none; }
.proc-reviewer { padding: 20px; background: var(--c-white, #fff); border: 1px solid #E3DFD5; border-top: 3px solid var(--c-ink); }
.proc-reviewer__cat { display: flex; gap: 8px; align-items: center; margin: 0 0 10px; font-size: .8125rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--c-brand-dark); }
.proc-reviewer__names { margin: 0; padding: 0; list-style: none; display: grid; gap: 8px; }
.proc-reviewer__names strong { display: block; color: var(--c-ink); }
.proc-reviewer__names span { color: var(--c-text-dark-2); font-size: .875rem; }
.proc-incharge { display: block; margin-top: 2px; font-size: .8125rem; color: var(--c-brand-dark); }
.proc-count { display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 6px; background: var(--c-ink); color: var(--c-text); font-size: .8125rem; font-weight: 700; }
.proc-table td, .proc-table th { vertical-align: middle; }
.proc-table__action { text-align: end; white-space: nowrap; }
.proc-table .btn--sm, .ext-section .btn--sm { min-height: 40px; padding: 0 16px; font-size: .875rem; }
.proc-note { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; margin: 20px 0 0; color: var(--c-text-dark-2); font-size: .9375rem; }
.proc-note a { color: var(--c-brand-dark); font-weight: 600; }
.proc-fieldset-lead { margin: -4px 0 12px; }
.proc-review { border-top: 4px solid var(--c-accent); }
@media (max-width: 640px) {
  .proc-table, .proc-table tbody { display: block; }
  .proc-table thead { display: none; }
  .proc-table tr { display: grid; grid-template-columns: 1fr auto; gap: 4px 12px; padding: 12px 16px; border-bottom: 1px solid #ECE8DE; }
  .proc-table th, .proc-table td { border: 0; padding: 0; }
  .proc-table th { grid-column: 1 / -1; }
  .proc-table__action { grid-column: 1 / -1; text-align: start; margin-top: 6px; }
}

/* Main-site procurement landing (Procurement::landing): the portal blocks on the corporate theme. */
.proc-land-hero__inner { display: grid; gap: 32px; align-items: end; }
@media (min-width: 1024px) { .proc-land-hero__inner { grid-template-columns: minmax(0, 1fr) auto; } }
.proc-land-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 24px 0 0; }
.proc-land-hero__facts { flex-wrap: wrap; }
.proc-land .ext-table__sub { color: var(--c-text-dark-2); }
.proc-land .proc-checks__title { color: var(--c-ink); }
.proc-land--catalog { background: var(--c-paper-2); }
.proc-land--catalog .proc-group__lead { color: var(--c-text-dark-2); }
.proc-land__catcta { display: inline-flex; gap: 6px; align-items: center; margin-top: 16px; color: var(--c-brand-dark); font-weight: 700; text-decoration: none; }
.proc-land__catcta:hover { text-decoration: underline; }
.proc-land .proc-step, .proc-land .proc-eval li { background: var(--c-paper); }

/* Public tender detail (Procurement::tender). */
.proc-table__link { color: inherit; text-decoration: none; }
.proc-table__link:hover, .proc-table__link:focus-visible { color: var(--c-brand); text-decoration: underline; text-underline-offset: 3px; }
.proc-table__action .btn + .btn { margin-inline-start: 8px; }
.td-hero__inner { display: grid; gap: 32px; align-items: end; }
@media (min-width: 1024px) { .td-hero__inner { grid-template-columns: minmax(0, 1fr) 360px; gap: 56px; padding-top: 56px; padding-bottom: 64px; } }
.td-hero__tags { display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 18px; }
.td-tag { display: inline-flex; align-items: center; gap: 6px; padding: 4px 12px; border: 1px solid rgba(255, 255, 255, .28); color: var(--c-text); font-size: .8125rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.td-tag--open { border-color: #3E9B5B; color: #9BE0B0; }
.td-tag--auction { border-color: var(--c-brand); background: var(--c-brand); color: #fff; }
.td-tag--cat { border-color: var(--c-accent); color: var(--c-accent); }
.td-tag--demo { border-style: dashed; color: var(--c-text-2); }
.td-dot { width: 8px; height: 8px; border-radius: 50%; background: #3E9B5B; box-shadow: 0 0 0 0 rgba(62, 155, 91, .6); animation: td-pulse 2s infinite; }
@keyframes td-pulse { 70% { box-shadow: 0 0 0 8px rgba(62, 155, 91, 0); } 100% { box-shadow: 0 0 0 0 rgba(62, 155, 91, 0); } }
@media (prefers-reduced-motion: reduce) { .td-dot { animation: none; } }
.td-hero__title { margin: 0 0 12px; font-size: clamp(1.875rem, 4.5vw, 3.25rem); line-height: 1.08; max-width: 24ch; color: var(--c-text); }
.td-hero__ref { margin: 0; color: var(--c-text-2); font-size: 1rem; }
.td-hero__actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 28px 0 0; }
.td-deadline { padding: 24px; background: var(--c-paper); color: var(--c-text-dark); border-top: 4px solid var(--c-accent); box-shadow: 0 20px 40px rgba(0, 0, 0, .25); }
.td-deadline__label { margin: 0 0 10px; font-size: .8125rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--c-brand-dark); }
.td-countdown { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin: 0 0 14px; }
.td-countdown span { display: grid; justify-items: center; gap: 2px; padding: 12px 4px; background: var(--c-ink); color: var(--c-text-2); font-size: .75rem; text-transform: uppercase; letter-spacing: .06em; }
.td-countdown strong { font-family: var(--f-display); font-size: 2.25rem; line-height: 1; color: var(--c-text); letter-spacing: 0; }
.td-countdown.is-closed { display: block; padding: 14px; background: #F3E3E5; color: var(--c-brand-dark); font-weight: 700; }
.td-deadline__date { margin: 0 0 16px; font-size: .9375rem; color: var(--c-text-dark-2); }
.td-deadline__btn, .td-side__btn { width: 100%; justify-content: center; }
.td-deadline__note { display: flex; gap: 8px; align-items: flex-start; margin: 14px 0 0; font-size: .8125rem; color: var(--c-text-dark-2); }
.td-deadline__note .icon { flex: none; margin-top: 2px; color: var(--c-brand); }
.td-grid { display: grid; gap: 24px; }
@media (min-width: 1024px) { .td-grid { grid-template-columns: minmax(0, 1fr) 360px; gap: 32px; align-items: start; } .td-side { position: sticky; top: 112px; } }
.td-main, .td-side { display: grid; gap: 24px; min-width: 0; }
.td-card { padding: 28px; background: var(--c-white, #fff); border: 1px solid #E3DFD5; box-shadow: 0 1px 2px rgba(11, 26, 48, .05); }
@media (max-width: 640px) { .td-card { padding: 20px; } }
.td-card__title { margin: 0 0 18px; padding-bottom: 12px; border-bottom: 2px solid var(--c-ink); font-size: 1.375rem; color: var(--c-ink); }
.td-card--dark { background: var(--c-ink); border-color: var(--c-ink); color: var(--c-text-2); }
.td-card--dark .td-card__title { color: var(--c-text); border-bottom-color: var(--c-accent); }
.td-card--type { border-top: 4px solid var(--c-brand); }
.td-card > p { color: var(--c-text-dark-2); }
.td-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 0 24px; margin: 0; }
.td-facts div { padding: 12px 0; border-bottom: 1px solid #ECE8DE; }
.td-facts dt { margin: 0 0 4px; font-size: .75rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--c-text-dark-2); }
.td-facts dd { margin: 0; font-weight: 600; color: var(--c-ink); }
.td-scope p { margin: 0 0 12px; color: var(--c-text-dark); line-height: 1.65; }
.td-docs { display: flex; gap: 16px; align-items: flex-start; margin-top: 20px; padding: 18px 20px; background: var(--c-paper); border-inline-start: 3px solid var(--c-accent); }
.td-docs .icon { flex: none; color: var(--c-brand); }
.td-docs h3 { margin: 0 0 4px; font-size: 1rem; color: var(--c-ink); }
.td-docs p { margin: 0; font-size: .9375rem; color: var(--c-text-dark-2); }
.td-flow { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 180px), 1fr)); margin: 20px 0 0; padding: 0; list-style: none; }
.td-flow li { display: grid; gap: 6px; align-content: start; }
.td-flow__no { display: inline-grid; place-items: center; width: 36px; height: 36px; background: var(--c-ink); color: var(--c-accent); font-family: var(--f-display); font-size: 1.25rem; }
.td-flow strong { color: var(--c-ink); }
.td-flow li > span:last-child { color: var(--c-text-dark-2); font-size: .9375rem; }
.td-muted { margin: 0 0 16px; color: var(--c-text-dark-2); }
.td-fit { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
@media (min-width: 768px) { .td-fit { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.td-fit label { display: flex; gap: 12px; align-items: flex-start; height: 100%; padding: 14px 16px; border: 1px solid #E3DFD5; cursor: pointer; transition: border-color .15s, background .15s; }
.td-fit label:hover { border-color: var(--c-accent); }
.td-fit input { flex: none; width: 20px; height: 20px; margin-top: 2px; accent-color: var(--c-brand); }
.td-fit label:has(input:checked) { border-color: #3E9B5B; background: #F1F8F3; }
.td-fit strong { display: block; margin-bottom: 2px; color: var(--c-ink); }
.td-fit label span { color: var(--c-text-dark-2); font-size: .9375rem; }
.td-fit__result { margin-top: 18px; }
.td-fit__bar { height: 10px; background: #ECE8DE; overflow: hidden; }
.td-fit__bar span { display: block; height: 100%; background: var(--c-accent); transition: width .25s ease; }
[data-fit].is-good .td-fit__bar span { background: #3E9B5B; }
.td-fit__result p { margin: 10px 0 0; font-weight: 600; color: var(--c-ink); }
.td-checks { display: grid; gap: 12px; margin: 0 0 22px; padding: 0; list-style: none; }
.td-checks li { display: flex; gap: 10px; align-items: flex-start; }
.td-checks .icon { flex: none; margin-top: 2px; color: var(--c-accent); }
.td-side__links { margin: 14px 0 0; font-size: .9375rem; text-align: center; }
.td-side__links a { color: var(--c-text); text-decoration: underline; text-underline-offset: 3px; }
.td-related__grid { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); margin: 0; padding: 0; list-style: none; }
.td-related__card { position: relative; padding: 22px; border: 1px solid var(--c-line); border-top: 3px solid var(--c-accent); background: rgba(255, 255, 255, .03); transition: border-color .2s; }
.td-related__card:hover, .td-related__card:focus-within { border-color: var(--c-accent); }
.td-related__meta { margin: 0 0 8px; font-size: .8125rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--c-accent); }
.td-related__card h3 { margin: 0 0 10px; font-size: 1.125rem; }
.td-related__card h3 a { color: var(--c-text); text-decoration: none; }
.td-related__card h3 a::after { content: ''; position: absolute; inset: 0; }
.td-related__date { margin: 0; color: var(--c-text-2); font-size: .875rem; }
