/* Review Mode: flutter_app/lib/screens/strike/strike_mode_screen.dart (SMS:n),
   the shared listing card flutter_app/lib/widgets/listing_card_view.dart (LCV:n)
   and listing_timing_facts.dart. Full-screen: no nav bar. The status bar sits on
   #FCF7F9 (.k-screen.k-flat); everything below it is the Column in SMS:6307. */

/* header (SMS:6310): 40 tall, white, hairline under it */
.k-review-header { flex: none; position: relative; display: flex; align-items: center; height: 40px; padding: 0 8px; background: #FFFFFF; border-bottom: .5px solid #EEEEEE; }
.k-review-header > .k-tool { display: grid; place-items: center; height: 40px; padding: 0 8px; color: #1A1D2E; }
.k-review-header > .k-tool.flag { padding: 0 4px; color: #FF9800; }
.k-review-header > .k-tool.flag.disabled { color: #CBD5E1; }
.k-review-header > .k-grow { flex: 1; }
.k-review-header > .k-view-toggle { position: absolute; left: 50%; transform: translateX(-50%); }

/* Card / Original page toggle (SMS:_ViewModeToggle) */
.k-view-toggle { display: flex; height: 32px; padding: 3px; border-radius: 16px; background: #F3F4F1; }
.k-view-toggle > div { display: flex; align-items: center; gap: 5px; padding: 4px 12px; border-radius: 13px; font-size: 13px; font-weight: 600; line-height: 18px; letter-spacing: -.1px; color: #6B7280; white-space: nowrap; }
.k-view-toggle > .on { background: #FFFFFF; color: #1A1D2E; box-shadow: 0 1px 3px rgba(0, 0, 0, .08); }
.k-view-toggle > .disabled { color: #9CA3AF; }

/* the content area: card frame (LCV:51) scrolls on #F4F7F2 */
.k-review-body { flex: 1; min-height: 0; position: relative; overflow: hidden; background: #F4F7F2; }

/* media frame (LCV:337): 270 tall, frosted tab bar on top */
.k-media { position: relative; height: 270px; overflow: hidden; background: #1F2937; }
.k-media > k-photo { position: absolute; inset: 0; }
.k-media.floor { background: #F8F6F1; }
.k-media-tabs { position: absolute; top: 10px; left: 14px; right: 14px; z-index: 2; display: flex; gap: 4px; padding: 4px; border-radius: 12px; background: rgba(0, 0, 0, .2); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.k-media-tabs > div { flex: 1; padding: 7px 0; border-radius: 8px; text-align: center; font-size: 12px; font-weight: 600; line-height: 1; letter-spacing: -.1px; color: rgba(255, 255, 255, .92); }
.k-media-tabs > .on { background: #FFFFFF; font-weight: 700; color: #111827; }
/* the photo counter (LCV:813): bottom-right, black 45 %, fully rounded */
.k-photo-pill { position: absolute; right: 10px; bottom: 10px; z-index: 2; padding: 4px 9px; border-radius: 999px; background: rgba(0, 0, 0, .45); font-size: 11px; font-weight: 600; line-height: 14px; letter-spacing: 0; color: #FFFFFF; }
.k-media-pager { position: absolute; bottom: 10px; left: 0; right: 0; z-index: 2; display: flex; justify-content: center; gap: 5px; }
.k-media-pager i { width: 5px; height: 5px; border-radius: 999px; background: rgba(255, 255, 255, .55); }
.k-media-pager i.on { width: 18px; background: #FFFFFF; }
.k-media.floor .k-media-pager i { background: rgba(17, 24, 39, .6); }
.k-media.floor .k-media-pager i.on { background: #111827; }
.k-pdf-badge { position: absolute; right: 12px; bottom: 36px; z-index: 2; display: flex; align-items: center; gap: 6px; padding: 6px 12px; border-radius: 20px; background: rgba(0, 0, 0, .72); font-size: 12px; font-weight: 600; color: #FFFFFF; }
/* location tab (LCV:1114): map controls over the native map */
.k-map-address { position: absolute; left: 12px; bottom: 12px; z-index: 2; display: flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: 10px; background: #FFFFFF; box-shadow: 0 4px 14px rgba(0, 0, 0, .1); font-size: 11px; font-weight: 600; line-height: 1.2; letter-spacing: 0; color: #111827; }
.k-map-address > k-icon { color: #6B7280; }
.k-map-distance { position: absolute; left: 12px; bottom: 52px; z-index: 2; display: flex; align-items: center; gap: 5px; padding: 6px 9px; border-radius: 6px; background: rgba(255, 255, 255, .94); box-shadow: 0 1px 4px rgba(0, 0, 0, .14); font-size: 12px; font-weight: 600; letter-spacing: 0; }
.k-map-locate { position: absolute; right: 12px; bottom: 12px; z-index: 2; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: #FFFFFF; box-shadow: 0 1px 3px rgba(0, 0, 0, .3); color: #111827; }
.k-media-empty { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; background: #F3F4F1; font-size: 12px; font-weight: 500; color: #9CA3AF; }
.k-media-empty > k-icon { color: rgba(156, 163, 175, .4); }

/* body (LCV:2040): padding 20,20,20,28 */
.k-listing-body { padding: 20px 20px 28px; }
.k-listing-title-row { display: flex; align-items: flex-start; gap: 12px; min-height: 48px; }
.k-listing-title { flex: 1; min-width: 0; font-size: 21px; font-weight: 600; line-height: 1.1; letter-spacing: 0; color: #111827; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.k-listing-title-row > .k-share { flex: none; display: grid; place-items: center; width: 48px; height: 48px; margin: -12px -14px 0 0; color: #6B7280; }
/* a listing that can't be shared (LCV:_ShareButton disabled) */
.k-listing-title-row > .k-share.disabled { color: #CBD5E1; }
.k-listing-address { margin-top: 4px; font-size: 13px; line-height: 1.25; letter-spacing: 0; color: #8B94A3; }
/* stats grid (LCV:_StatsGrid): one white card, padding 14 by 10, cells split
   by 1 x 42 rules with their label and value centred in them. The value is
   height 1.0 in a FittedBox, so a long floor ("Erd-/Obergeschoß") shrinks; a
   floor shows as parseFloorLabel prints it ("3. OG", "EG") in every language. */
.k-stats { display: flex; align-items: center; margin-top: 18px; padding: 14px 10px; background: #FFFFFF; border: 1px solid #E5E7EB; border-radius: 18px; box-shadow: 0 8px 18px rgba(0, 0, 0, .07); }
.k-stats > div { flex: 1; min-width: 0; min-height: 42px; display: flex; flex-direction: column; justify-content: center; text-align: center; }
.k-stats > div + div { border-left: 1px solid #E5E7EB; }
.k-stats small { display: block; font-size: 10px; font-weight: 700; line-height: 14px; letter-spacing: .9px; color: #9CA3AF; }
.k-stats b { display: block; margin-top: 6px; font-size: 21px; font-weight: 800; line-height: 21px; letter-spacing: -.5px; color: #111827; white-space: nowrap; }
/* source badge + timing */
.k-source-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; margin-top: 16px; }
.k-source-badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border: 1px solid #E7EBE3; border-radius: 999px; background: #F3F4F1; font-size: 9.5px; font-weight: 700; line-height: 12px; letter-spacing: .5px; color: #6B7280; }
.k-source-badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: #22C55E; box-shadow: 0 0 4px rgba(34, 197, 94, .35); }
.k-timing { font-size: 11px; font-weight: 500; line-height: 1.3; letter-spacing: 0; color: #9CA3AF; }
/* a gone listing adds "No longer online as of …" as a line of its own */
.k-timing > span { display: block; }
.k-timing > span + span { margin-top: 3px; }
.k-delay-badge { display: inline-block; margin-left: 4px; padding: 2px 6px; border-radius: 6px; background: #F3F4F6; font-size: 10px; font-weight: 600; color: #4B5563; }
/* section labels and the decision-signal chips (5 tones) */
.k-listing-label { margin-top: 22px; font-size: 12px; font-weight: 800; letter-spacing: 1.1px; text-transform: uppercase; color: #4B5563; }
.k-signals { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.k-signal { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px 6px 8px; border: 1px solid #E5E7EB; border-radius: 10px; background: #F9FAFB; font-size: 12px; font-weight: 600; line-height: 16px; letter-spacing: 0; color: #4B5563; }
.k-signal > i { display: grid; place-items: center; width: 16px; height: 16px; border-radius: 50%; background: #9CA3AF; font-size: 10px; font-style: normal; font-weight: 800; color: #FFFFFF; }
.k-signal.good { background: #ECFDF5; border-color: #A7F3D0; color: #047857; }
.k-signal.good > i { background: #10B981; }
.k-signal.info { background: #EEF2FF; border-color: #C7D2FE; color: #4338CA; }
.k-signal.info > i { background: #6366F1; }
.k-signal.caution { background: #FFFBEB; border-color: #FDE68A; color: #B45309; }
.k-signal.caution > i { background: #F59E0B; }
.k-signal.danger { background: #FEF2F2; border-color: #FECACA; color: #B91C1C; }
.k-signal.danger > i { background: #EF4444; }
/* listing details: label and value columns split the row in half */
.k-details { margin-top: 10px; padding: 2px 14px; background: #FFFFFF; border: 1px solid #E5E7EB; border-radius: 18px; box-shadow: 0 8px 18px rgba(0, 0, 0, .07); }
.k-details > div { display: flex; align-items: baseline; padding: 10px 0; }
.k-details > div + div { border-top: 1px solid #F3F4F6; }
.k-details small { flex: 1; font-size: 11px; font-weight: 700; letter-spacing: .9px; text-transform: uppercase; color: #9CA3AF; }
.k-details b { flex: 1; font-size: 14px; font-weight: 700; letter-spacing: -.2px; color: #111827; }

/* WebView mode: the listing's own page (a neutral wireframe here, never a real
   portal's look), then the info strip (SMS:StrikeInfoStrip) */
.k-webview { position: absolute; inset: 0; overflow: hidden; background: #FFFFFF; }
.k-webview > .bar { height: 44px; background: #F3F4F6; border-bottom: 1px solid #E5E7EB; }
.k-webview > k-photo { display: block; height: 210px; }
.k-webview > .line { height: 10px; margin: 12px 16px 0; border-radius: 5px; background: #E5E7EB; }
.k-webview > .line.head { height: 18px; width: 70%; background: #CBD5E1; }
.k-webview > .line.short { width: 45%; }
.k-webview > .line.price { height: 22px; width: 38%; margin-top: 16px; background: #94A3B8; }
.k-webview > .button { height: 44px; margin: 20px 16px 0; border-radius: 8px; background: #64748B; }
.k-info-strip { flex: none; padding: 10px 16px; background: #FFFFFF; border-top: 1px solid rgba(0, 0, 0, .06); letter-spacing: 0; }
.k-info-strip > b { display: block; font-size: 15px; font-weight: 600; line-height: 20px; letter-spacing: -.2px; color: #10B981; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.k-info-strip > span { display: block; margin-top: 2px; font-size: 11px; line-height: 15px; color: #4B5563; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.k-info-strip > div { display: flex; gap: 8px; margin-top: 2px; font-size: 9.5px; line-height: 13px; color: #6B7280; }
.k-info-strip > div > :last-child { flex: 2; font-size: 10px; font-weight: 500; color: #4B5563; text-align: right; }
.k-info-strip > div > :first-child { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

/* bottom action bar (SMS:_StrikeActionBar): dislike 72 | middle column | like
   72. In the queue it runs under the home indicator and ends inset + 10 below
   its content. .in-context, opened from a notification or a shared link: the
   bar stops 14 below it (SMS:6056) and the screen above the indicator
   (SMS:6300). Its texts set no letter spacing, so they keep bodyMedium's 0.25. */
.k-action-bar { flex: none; position: relative; z-index: 1; padding: 10px 14px max(14px, calc(var(--k-safe-bottom) + 10px)); background: #FFFFFF; border-top: 1px solid rgba(0, 0, 0, .06); box-shadow: 0 -6px 18px rgba(0, 0, 0, .08); }
.k-action-bar.in-context { padding-bottom: 14px; }
.k-action-row { display: flex; align-items: center; }
.k-action-middle { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; padding: 0 10px; }
/* opened from a notification (SMS:9222): a row across the top of the bar */
.k-notification-row { display: flex; align-items: center; gap: 8px; margin: -10px -14px 10px; padding: 14px 20px; border-bottom: 1px solid #E2E8F0; background: #EEF5FF; font-size: 14px; color: #2B5FAD; }
.k-notification-row > b { flex: 1; min-width: 0; font-weight: 600; }
/* decision circles (SMS:StrikeDecisionButton) */
.k-decision { flex: none; position: relative; display: grid; place-items: center; width: 72px; height: 72px; border: 2px solid; border-radius: 50%; }
.k-decision.dislike { background: #FECACA; border-color: rgba(239, 68, 68, .35); color: #DC2626; box-shadow: 0 6px 14px rgba(248, 113, 113, .18); }
.k-decision.like { background: #DCFCE7; border-color: rgba(22, 163, 74, .35); color: #15803D; box-shadow: 0 6px 14px rgba(74, 222, 128, .18); }
.k-decision.disabled { background: #F3F4F6; border-color: rgba(229, 231, 235, .35); color: #CBD5E1; box-shadow: none; }
.k-lock-badge { position: absolute; right: 2px; bottom: 2px; display: grid; place-items: center; width: 17px; height: 17px; border: 1px solid #E5E7EB; border-radius: 50%; background: #FFFFFF; box-shadow: 0 1px 3px rgba(0, 0, 0, .18); color: #64748B; }
/* progress header (SMS:_StrikeProgressHeader): the label keeps bodyMedium's
   height 1.43, which Flutter draws 16 tall at 11.5 */
.k-review-progress { display: flex; flex-direction: column; align-items: center; gap: 5px; width: 100%; margin-bottom: 8px; font-size: 11.5px; font-weight: 600; line-height: 16px; color: #4B5563; font-variant-numeric: tabular-nums; }
.k-review-progress > i { display: block; width: calc(100% - 56px); height: 3px; overflow: hidden; border-radius: 999px; background: #E5E7EB; }
.k-review-progress > i > b { display: block; min-width: 7px; height: 100%; border-radius: 999px; background: #4B5563; }
.k-review-progress.cap { font-weight: 700; color: #B45309; }
/* Easy Apply (SMS:StrikeEasyApplyButton): 64 tall at 75 % of the middle
   column. The label is 18 w800 in a FittedBox, so it shrinks to fit a narrow
   pill (about 13 at 390 dp): --ea-em is the label's length in ems, per state.
   The box scales the label's 0.25 spacing down with it, so --ea-em leaves the
   spacing out. */
.k-easy-apply { --ea-size: 18px; --ea-em: 5.4; container-type: inline-size; display: flex; align-items: center; gap: 8px; width: 75%; height: 64px; padding: 0 18px 0 14px; border: 2px solid rgba(99, 102, 241, .55); border-radius: 32px; background: #F0F3FF; box-shadow: 0 8px 14px rgba(99, 102, 241, .16), 0 4px 14px rgba(0, 0, 0, .05); font-weight: 800; line-height: 22px; letter-spacing: 0; color: #1A1D2E; white-space: nowrap; }
.k-easy-apply > span { min-width: 0; font-size: min(var(--ea-size), calc((100cqi - 42px) / var(--ea-em))); }
.k-easy-apply > i { flex: none; position: relative; display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid rgba(99, 102, 241, .45); border-radius: 50%; background: #E0E7FF; color: #4338CA; }
.k-easy-apply.disabled { background: #F8FAFC; border-color: rgba(229, 231, 235, .55); box-shadow: none; color: #CBD5E1; }
.k-easy-apply.disabled > i { background: #F1F5F9; border-color: #F1F5F9; color: #CBD5E1; }
.k-easy-apply.restricted > i { background: #EEF1F6; border-color: #D8DCE5; color: #94A3B8; }
.k-easy-apply.checking { --ea-size: 15px; --ea-em: 8.8; background: #FFF7ED; border-color: rgba(245, 158, 11, .55); box-shadow: 0 8px 14px rgba(245, 158, 11, .16), 0 4px 14px rgba(0, 0, 0, .05); color: #9A3412; }
.k-easy-apply.checking > i { background: #FFEDD5; border-color: rgba(245, 158, 11, .45); color: #C2410C; }
.k-easy-apply.sent { --ea-em: 3; background: #ECFDF5; border-color: rgba(34, 197, 94, .7); box-shadow: 0 8px 22px 2px rgba(34, 197, 94, .22), 0 4px 14px rgba(0, 0, 0, .05); color: #064E3B; }
.k-easy-apply.sent > i { background: #D1FAE5; border-color: rgba(34, 197, 94, .45); color: #047857; }
.k-easy-apply .k-lock-badge { right: -4px; bottom: -4px; }
/* utility row (SMS:9350): undo 34 and 8 (SMS:_UtilityIconButton), the
   template pill (SMS:_TemplateUtilityButton), then Tracker and Autopilot
   circles with no gap when the listing has them. The pill's label is loose, so
   its chevron follows the text. */
.k-utility-row { display: flex; align-items: center; width: 100%; margin-top: 17px; }
.k-utility-row > .k-utility-circle:first-child { margin-right: 8px; }
.k-utility-circle { flex: none; display: grid; place-items: center; width: 34px; height: 34px; border: 1px solid #E5E7EB; border-radius: 50%; background: #F8FAFC; color: #64748B; }
.k-template-pill { flex: 1; min-width: 0; display: flex; align-items: center; gap: 4px; height: 34px; padding: 0 6px 0 8px; border: 1px solid #E5E7EB; border-radius: 17px; background: #F8FAFC; font-size: 11.5px; font-weight: 500; color: #64748B; }
.k-template-pill > span { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.k-template-pill > k-icon:last-child { margin-left: -2px; color: #94A3B8; }
.k-utility-row.locked .k-utility-circle, .k-utility-row.locked .k-template-pill { color: #CBD5E1; }

/* _OutcomeTone (SMS:_OutcomeTone): one palette for the status chip and the
   outcome panel, so a listing reads the same before and after it locks. A tone
   class (amber, indigo, green, teal, red) sets the three colours; without one a
   part is slate. */
.k-status-chip, .k-outcome-row { --k-tone: #64748B; --k-tone-surface: #F1F5F9; --k-tone-border: #E2E8F0; }
:is(.k-status-chip, .k-outcome-row).amber { --k-tone: var(--pending-foreground); --k-tone-surface: var(--pending-surface); --k-tone-border: #FDE68A; }
:is(.k-status-chip, .k-outcome-row).indigo { --k-tone: #4338CA; --k-tone-surface: #F0F3FF; --k-tone-border: #C7D2FE; }
:is(.k-status-chip, .k-outcome-row).green { --k-tone: #15803D; --k-tone-surface: #ECFDF5; --k-tone-border: #BBF7D0; }
:is(.k-status-chip, .k-outcome-row).teal { --k-tone: #047857; --k-tone-surface: #ECFDF5; --k-tone-border: #A7F3D0; }
:is(.k-status-chip, .k-outcome-row).red { --k-tone: #B91C1C; --k-tone-surface: #FEF2F2; --k-tone-border: #FECACA; }
/* status chip (SMS:_StatusChip): 28 tall, while the listing is still open to a
   decision: above the progress line from a shared link, right above Easy Apply
   from a notification, which has no progress line. SMS:_priorDecisionLine makes
   it green (saved, liked), red (skipped, disliked) or indigo (used Easy Apply).
   The label is one line, cut short at the middle column's width. */
.k-status-chip { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; height: 28px; margin-bottom: 8px; padding: 0 10px; border: 1px solid var(--k-tone-border); border-radius: 14px; background: var(--k-tone-surface); font-size: 11.5px; font-weight: 700; color: var(--k-tone); white-space: nowrap; }
.k-status-chip > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; }

/* listing outcome panel (SMS:StrikeListingOutcomePanel): takes the decision
   row's place when a listing opened from a notification or a shared link can no
   longer be acted on. The gone line, a rule, what the user did with it
   (_activity, SMS:9590), then the way on. */
.k-outcome { display: flex; flex-direction: column; }
/* one line (SMS:_OutcomeRow): a toned 36 box with a 20 icon, the title 15
   w700, the subtitle 13. .one-line keeps the gone line's title to one line
   (SMS:9717); .toned colours a subtitle that is the state itself (SMS:9840).
   Flutter lays each text line out at a whole point, so the heights 1.3 and
   1.35 draw 20 and 18 tall, not 19.5 and 17.55. */
.k-outcome-row { display: flex; align-items: center; gap: 12px; }
.k-outcome-row > i { flex: none; display: grid; place-items: center; width: 36px; height: 36px; border: 1px solid var(--k-tone-border); border-radius: 12px; background: var(--k-tone-surface); color: var(--k-tone); }
.k-outcome-row > div { flex: 1; min-width: 0; }
.k-outcome-row b { display: block; font-size: 15px; font-weight: 700; line-height: 20px; color: #111827; }
.k-outcome-row span { display: block; margin-top: 1px; font-size: 13px; line-height: 18px; color: #6B7280; }
.k-outcome-row.one-line b { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.k-outcome-row.toned span { font-weight: 600; color: var(--k-tone); }
/* the rule between the gone line and the activity (SMS:9747) */
.k-outcome-rule { height: 1px; margin: 8px 0 8px 48px; background: #EEF0F3; }
/* marking the listing gone failed: a retry under the gone line (SMS:9738) */
.k-outcome > .k-text-button { align-self: flex-start; margin-left: 40px; }
/* the way on (SMS:9762): undo (.k-utility-circle) and 8, then the buttons */
.k-outcome-actions { display: flex; align-items: center; gap: 8px; margin-top: 12px; }
.k-outcome-actions > div { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
/* outcome button (SMS:_OutcomeButton): 44 tall inside its 48 tap target, icon
   20, the label up to two lines, a chevron */
.k-outcome-button { display: flex; align-items: center; gap: 10px; min-height: 44px; margin: 2px 0; padding: 0 10px 0 14px; border: 1px solid #DADCE0; border-radius: 14px; background: #FFFFFF; font-size: 14.5px; font-weight: 600; line-height: normal; letter-spacing: 0; color: #1F2937; }
.k-outcome-button > span { flex: 1; min-width: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* below the bar, from a notification (SMS:6724): Next listing, or Back to
   notifications on the last one. 40 tall inside its 48 tap target, on the
   scaffold; the SafeArea (SMS:6300) keeps the indicator's inset under it. */
.k-outlined-button.k-listing-next { flex: none; min-height: 40px; margin: 8px 16px calc(8px + var(--k-safe-bottom)); padding: 10px 24px; background: #FFFFFF; }

/* decision stamp (strike_decision_animations.dart): centred on the card */
.k-stamp { position: absolute; top: 50%; left: 50%; z-index: 5; display: flex; align-items: center; gap: 8px; padding: 12px 18px; border: 2px solid; border-radius: 18px; transform: translate(-50%, -50%); font-size: 20px; font-weight: 900; letter-spacing: 0; }
.k-stamp.liked { background: rgba(236, 253, 245, .94); border-color: rgba(34, 197, 94, .55); color: #22C55E; box-shadow: 0 10px 24px rgba(34, 197, 94, .22); }
.k-stamp.skipped { background: rgba(254, 242, 242, .94); border-color: rgba(239, 68, 68, .55); color: #EF4444; box-shadow: 0 10px 24px rgba(239, 68, 68, .22); }

/* Easy Apply progress pill (SMS:6790): dark, floating over everything */
.k-apply-pill { position: absolute; top: 80px; left: 16px; right: 16px; z-index: 6; display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: 12px; background: rgba(0, 0, 0, .85); font-size: 14px; letter-spacing: 0; color: #FFFFFF; }
.k-apply-pill.needs-user { top: auto; bottom: 110px; left: 24px; right: 24px; padding: 10px 12px; background: rgba(0, 0, 0, .62); font-size: 13px; }
.k-apply-pill .k-spinner { width: 18px; height: 18px; border-width: 2px; border-color: #FFFFFF #FFFFFF transparent transparent; }

/* end states (review_status_body.dart): centred, padding 32 */
.k-status-body { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: stretch; justify-content: center; padding: 32px; text-align: center; background: #FCF7F9; }
.k-status-body > k-icon { align-self: center; color: var(--primary); }
.k-status-body > h2 { margin: 24px 0 0; font: var(--headline-medium) var(--k-font); font-weight: 700; letter-spacing: var(--headline-medium-tracking); }
.k-status-body > p { margin: 12px 0 0; font: var(--body-large) var(--k-font); letter-spacing: var(--body-large-tracking); }
.k-status-body > .k-entry-card { margin-top: 16px; text-align: left; }
.k-status-body > .k-filled-button { margin-top: 32px; }
.k-status-body > .k-outlined-button, .k-status-body > .k-text-button { margin-top: 12px; }
