/* UI floors for both designs (9.5 plan, Phase 1, 30 Oct 2026), loaded after every other stylesheet:
   a tap area of at least 44 px (24 px for a link inside a sentence or a footer list), no text under 12 px,
   and a visible focus mark. e2e/tools/check_ui_score.py measures them on every ship.
   Standalone text links grow their tap area with padding that a negative margin takes back, so nothing moves. */

/* 1.2 tap areas: controls */
html body :is(.nav > a, .top-act > a, .theme-btn, .fchip, .proto-filter-reset, .rx-search button, .rx-search input,
  .filter-select select, .proto-sort select, .filters > summary, .proto-feed-tabs > a, .pager .btn, .proto-text-action,
  .myelig-cta, .proto-checklist > label, .imap-rg, .info-nav > a) { min-height: 44px !important; }
html body :is(.bm, .proto-copy, .proto-pages > a) { min-width: 44px !important; min-height: 44px !important; }
html body :is(.sec-link, .proto-feed-tabs > a, .info-nav > a) { display: inline-flex !important; align-items: center !important; }
html body .sec-link { min-height: 44px !important; }

/* 1.2 tap areas: text links and toggles that sit alone (the layout keeps its spacing) */
html body :is(.support-tip > a, .support-card > a, .support-rail > a, .proto-help > a, .modern-detail-kicker > a,
  .proto-detail-meta > a, .proto-related li > a) { display: inline-block !important; padding-block: max(0px, calc((44px - 1lh) / 2)) !important; margin-block: min(0px, calc((1lh - 44px) / 2)) !important; }
html body :is(.proto-personal-check, .proto-source-details, .report > details, .filter-more-types, .proto-related) > summary { padding-block: max(0px, calc((44px - 1lh) / 2)) !important; margin-block: min(0px, calc((1lh - 44px) / 2)) !important; }

/* 1.2 links inside a sentence: 24 px; padding on an inline link does not move the line */
html body .st-credit a { padding-block: 4px !important; }

/* 1.2 a fact box that says "View notice" opens the notice wherever it is tapped; every box keeps its size */
html body :is(.modern-detail-essentials, .detail-facts, .proto-info) > div { position: relative !important; }
html body .proto-info > div { min-height: 44px !important; } /* every row the same, so the one with the link is not taller */
html body :is(.modern-detail-essentials, .detail-facts, .proto-info) > div a.detail-notice-reference::after { content: "" !important; position: absolute !important; inset: 0 !important; border-radius: inherit !important; }

/* 1.3 no text under 12 px */
html body :is(.tabbar a span, .colour-eyebrow, .proto-badge, .ct-pill, .application-eyebrow, .proto-closing-top > b,
  .proto-detail-board, .proto-section-label, .proto-section-label span, .proto-tools-kicker, .proto-hero-hint,
  .rx-kicker, .sec-link, .proto-detail-mark, .stp-now, .proto-small-label, .home-planner b, .imap-lb, .imap-chip,
  .proto-agenda-date small) { font-size: 12px !important; }
html body .proto-agenda-date { width: auto !important; min-width: 36px !important; } /* a saved exam's day and month; 12 px "NOV" needs the room */
/* a job card's board monogram keeps its grid column (wider, it ran into the title); it is decoration (aria-hidden, the
   board's name is written in the row), so a 4 or 5 letter one keeps its own smaller size to fit */
html body .proto-board:not([data-n="4"], [data-n="5"]) { font-size: 12px !important; letter-spacing: 0 !important; }

/* 1.4 every control reached with Tab shows where it is */
html body :is(a, button, summary, select, input, textarea, [tabindex]:not([tabindex="-1"])):not(:is(.rx-search, .search-field, .top-search) input):focus-visible { outline: 2px solid var(--focus-ring, #2563eb) !important; outline-offset: 2px !important; }
