@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('/static/fonts/IBMPlexMono-400-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('/static/fonts/IBMPlexMono-500-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Newsreader';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/static/fonts/Newsreader-400-600-normal.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}/* --- New site baseline (owner order 13 Jul 2026, "Upload App" mock) ---
   Space Grotesk (display) + IBM Plex Sans (body). Files extracted from the
   owner's Claude Design bundle; the bundle reuses one file per subset for
   Space Grotesk 500-700 and IBM Plex Sans 400-600, mirrored here. */
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url('/static/fonts/SpaceGrotesk-500-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Space Grotesk';
  font-style: normal;
  font-weight: 500 700;
  font-display: swap;
  src: url('/static/fonts/SpaceGrotesk-500-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+1E00-1E9F, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/static/fonts/IBMPlexSans-400-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+20AC, U+2122, U+2212, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/static/fonts/IBMPlexSans-400-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+1E00-1E9F, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+A720-A7FF;
}
@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/static/fonts/IBMPlexSans-400-cyrillic.woff2') format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

/* Dashboard locked-report unlock CTAs — static override so the owner-approved
   compact look (21.07) reaches the LIVE server-rendered dashboard WITHOUT an app
   rebuild. One line, right-aligned: quiet Locked pill + two SMALL tier buttons
   side by side, bold labels (legible on gold), Complete = solid gold primary /
   Review = gold outline. Tier picked via the form's hidden input (no server class
   needed). Dashboard-only selectors, harmless elsewhere. Mirrors api/routes/
   account.py Block Б; redundant once that ships. */
.report-row > div:first-child { min-width: 0; }
.report-row .report-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.report-row .report-unlock { display: flex; flex-direction: row; align-items: center; justify-content: flex-end; gap: 11px; flex-wrap: nowrap; }
.report-row .unlock-btns { display: flex; flex-direction: row; align-items: center; gap: 8px; flex-wrap: nowrap; }
.report-row .unlock-lead { display: none; }
@media (max-width: 560px) { .report-row .report-unlock { flex-wrap: wrap; justify-content: flex-start; } }
.report-row .unlock-btn { display: inline-block; width: auto; text-align: center; font-weight: 700; font-size: 12.5px; border-radius: 8px; padding: 7px 14px; cursor: pointer; white-space: nowrap; border: 1px solid transparent; transition: background .15s ease, border-color .15s ease, color .15s ease; }
.report-row .unlock-btn .usd { font-size: 10px; font-weight: 600; margin-left: 3px; }
.report-row .unlock-form:has(input[value="complete_package"]) .unlock-btn { background: #C79A34; color: #100D06; border-color: #C79A34; }
.report-row .unlock-form:has(input[value="complete_package"]) .unlock-btn:hover { background: #D6B25E; border-color: #D6B25E; }
.report-row .unlock-form:has(input[value="complete_package"]) .unlock-btn .usd { color: #3A2C08; font-weight: 700; }
.report-row .unlock-form:has(input[value="review"]) .unlock-btn { background: transparent; color: #E8CE86; border-color: rgba(181,135,46,0.55); }
.report-row .unlock-form:has(input[value="review"]) .unlock-btn:hover { border-color: #D6B25E; color: #D6B25E; background: rgba(181,135,46,0.09); }
.report-row .unlock-form:has(input[value="review"]) .unlock-btn .usd { color: #C79A34; }
