/* FILE: /srv/slimboom/Sites/slimboom/public/assets/spanihel/links_unified.css
 * StrategySift V34 (2026-11-07): common text link decoration.
 * Loaded LAST through layout.php for every public, blog, portfolio and admin page.
 * Scope: links ONLY. No colors, spacing, positioning, or business logic changed.
 * Keep button-shaped controls, navigation, tabs, chips, full-card links as controls.
 */

/* Use identical underline geometry in all contexts. This rule does not turn
   on underlines: permanent underlines on legal and article prose remain. */
body.sb-unified .sb-page :is(.sa-main,.sb-main,.sa-global-footer) a[href] {
  text-underline-offset: 3px;
  text-decoration-thickness: 1px;
}

/* Ordinary textual links become visibly underlined on pointer hover.
   Do not impose a global link color: each page retains its verified palette. */
@media (hover: hover) and (pointer: fine) {
  body.sb-unified .sb-page :is(.sa-main,.sb-main) a[href]:not(:is(
    [role="button"],
    .btn, .sb-btn, .sa-hero-button, .sa-v10-mainlink, .sa-r-primary,
    [class*="-btn"], [class*="__btn"], [class*="-button"], [class*="__button"],
    [class*="-tab"], [class*="__tab"], [class*="-pill"], [class*="__pill"]
  )):not(:is(
    .paper-links a, .sa-v10-next a, .sa-r-bottom-nav a,
    .sa-legal-nav a, .sa-r-runlist a,
    .sb-journal-categories a, .sb-journal-tags a,
    .sb-stock-tabs a, .sb-pf-tabs a, .sb-pf-range a,
    .sb-pf-ui-tabs a, .sb-pf-ui-pages a, .sb-pf-ui-two-actions a,
    .sb-ops-tabs a, .sb-admin-sidebar a,
    .sb-journal-pagination a,
    a:has(> img)
  )):hover {
    text-decoration-line: underline;
    text-decoration-color: currentColor;
  }
}

/* Keyboard-only focus: consistent, high-contrast outline without changing
   geometry or clearing any more specific, existing focus state. */
body.sb-unified .sb-page :is(.sa-main,.sb-main,.sa-global-footer) a[href]:focus-visible {
  outline: 2px solid #1687c2;
  outline-offset: 3px;
}

/* StrategySift V35 — consolidated link and layout normalization (2026-11-07).
 * Applies after all route styles, without changing any PHP view or database data.
 * Shared OUTER canvas: 1310px including padding, all public and app modes.
 * Exceptions: homepage full-bleed hero, inner reading columns, data-table overflow.
 */
body.sb-unified {
  --ss-content-width: 1310px;
  --ss-shell-width: var(--ss-content-width);
  --sb-max: var(--ss-content-width);
  --sb-pad: 28px;
}
body.sb-unified .sa-global-header__inner,
body.sb-unified .sb-main > .sb-container,
body.sb-unified .sb-subnav__inner,
body.sb-unified .sa-global-footer .shell,
body.sb-unified.sb-mode-admin .sb-admin-shell,
body.sb-unified.sa-mode .sa-main .shell,
body.sb-unified.sa-mode .sa-main .sa-research-v10,
body.sb-unified.sa-mode .sa-main .sa-research-v9,
body.sb-unified.sa-mode .sa-main > .sa-page-notice {
  max-width: var(--ss-content-width);
  margin-left: auto;
  margin-right: auto;
}
/* Same content insets across public pages. Specific type/reading widths
 * are kept on the inner article paragraphs to preserve readability. */
body.sb-unified.sa-mode .sa-main .sa-research-v10,
body.sb-unified.sa-mode .sa-main .sa-research-v9,
body.sb-unified.sa-mode .sa-main > .sa-page-notice {
  width: 100%;
  padding-left: 28px;
  padding-right: 28px;
}
body.sb-unified.sb-mode-blog .sb-main > .sb-container {
  max-width: var(--ss-content-width);
}
body.sb-unified.sb-mode-blog .sb-journal {
  max-width: none;
  width: 100%;
}
/* The journal article content retains its dedicated readable width. */
@media (max-width: 760px) {
  body.sb-unified { --sb-pad: 18px; }
  body.sb-unified.sa-mode .sa-main .sa-research-v10,
  body.sb-unified.sa-mode .sa-main .sa-research-v9,
  body.sb-unified.sa-mode .sa-main > .sa-page-notice {
    padding-left: 18px;
    padding-right: 18px;
  }
}

/* Textual links: the existing V34 rule decorates text on hover.
 * Uniform focus applies to native links, buttons, and disclosure controls. */
body.sb-unified .sb-page :is(a[href], button, summary, input[type="submit"], input[type="button"]):focus-visible {
  outline: 2px solid #1279b3;
  outline-offset: 3px;
}

/* The blue-on-white focus treatment would be weak against the dark hero.
 * Keep the existing high-contrast WHITE keyboard ring for hero controls. */
body.sb-unified.sa-mode .sb-page .sa-main > .hero .sa-hero-button:focus-visible,
body.sb-unified.sa-mode .sb-page .sa-main > .hero .hero-dots button:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 4px;
}

/* All button-like links and native buttons receive a state, including
 * research CTA, admin submit buttons, and page-local controls. */
body.sb-unified .sb-page :is(.sa-main, .sb-main) :is(a.btn, a.sb-btn, a.sa-v10-mainlink, a.sa-r-primary,
  a.sa-hero-button, a[role="button"], button:not(:disabled), input[type="submit"]:not(:disabled),
  input[type="button"]:not(:disabled)) {
  transition: background-color .18s ease, border-color .18s ease,
              box-shadow .18s ease, filter .18s ease;
}
@media (hover: hover) and (pointer: fine) {
  body.sb-unified .sb-page :is(.sa-main, .sb-main) :is(a.btn, a.sb-btn, a.sa-v10-mainlink, a.sa-r-primary,
    a.sa-hero-button, a[role="button"], button:not(:disabled), input[type="submit"]:not(:disabled),
    input[type="button"]:not(:disabled)):hover {
    filter: brightness(.92);
    text-decoration: none;
  }
  /* Research primary call-to-action: previously entirely static. */
  body.sb-unified.sa-mode .sa-main a.sa-v10-mainlink:hover {
    background-color: #df7300;
    box-shadow: 0 10px 22px rgba(179,88,0,.24);
    filter: none;
  }
  /* Full-surface navigational cards: the hover belongs to the whole card,
     not just to the label. Do not make informational cards clickable. */
  body.sb-unified.sa-mode .sa-main :is(.sa-v10-next, .sa-r-bottom-nav) > a[href]:hover {
    background-color: #e8f4fc;
    border-color: #8dbbd5;
    box-shadow: 0 7px 20px rgba(8,62,102,.1);
    text-decoration: none;
  }
  body.sb-unified.sa-mode .sa-main .paper-links a[href]:hover {
    background-color: #e8f4fc;
    border-color: #8dbbd5;
    text-decoration: none;
  }
  /* Avoid underlining navigation and tab-like full-area controls. */
  body.sb-unified .sb-page :is(.sa-main, .sb-main) :is(
    .sb-subnav__link, .sb-admin-group__item, .sb-ops-tabs__link,
    .sb-stock-tabs a, .sb-pf-tabs a, .sb-pf-ui-tabs a,
    .sb-slui-tabs__link, .sb-journal-categories a,
    .sb-journal-tags a, .sb-journal-pagination a
  ):hover {
    text-decoration: none;
  }
  body.sb-unified .sb-page :is(.sa-main,.sb-main) :is(.sa-v10-study-details, .sa-v10-technical) > summary:hover {
    color: #064f80;
    text-decoration: underline;
    text-underline-offset: 3px;
  }
}
@media (prefers-reduced-motion: reduce) {
  body.sb-unified .sb-page :is(.sa-main,.sb-main) :is(a.btn,a.sb-btn,a.sa-v10-mainlink,a.sa-r-primary,a.sa-hero-button,button,input[type="submit"],input[type="button"]) {
    transition: none;
  }
}


/* FILE: /srv/slimboom/Sites/slimboom/public/assets/spanihel/links_unified.css
 * StrategySift V39 (2026-11-07): typography pass 1 — public content body,
 * research and homepage cards, and verified text contrast.
 * Scoped strictly to sa-mode .sa-main. Does not affect the hero overlay,
 * brand/navigation, journal articles, portfolio views, admin or footer.
 */
body.sb-unified.sa-mode {
  --ss-type-body: 16px;
  --ss-type-card: 15px;
  --ss-type-card-compact: 14px;
  --ss-type-copy-color: #48647b;
}

/* Base reading size on public informational pages. Keep all local heading,
 * hero CTA, label, legal-document and navigation sizes untouched. */
body.sb-unified.sa-mode .sa-main {
  font-size: var(--ss-type-body);
}

/* Homepage explanatory cards (not hero graphics or the footer). */
body.sb-unified.sa-mode .sa-main .card-body > p,
body.sb-unified.sa-mode .sa-main .pathway-card > p,
body.sb-unified.sa-mode .sa-main .blog-article p {
  font-size: var(--ss-type-card);
  line-height: 1.65;
  color: var(--ss-type-copy-color);
}
body.sb-unified.sa-mode .sa-main .paper-strip p {
  font-size: var(--ss-type-card-compact);
  line-height: 1.6;
  color: var(--ss-type-copy-color);
}
/* The research-method steps already use a larger approved desktop size.
 * On narrow screens only remove the old 13px compression. */
@media (max-width: 560px) {
  body.sb-unified.sa-mode #research-lab .sa-method-step p {
    font-size: var(--ss-type-card-compact);
  }
}

/* Research: primary explanatory text, NOT technical tables or metadata. */
body.sb-unified.sa-mode .sa-main .sa-v10-steps p,
body.sb-unified.sa-mode .sa-main .sa-v10-promise p,
body.sb-unified.sa-mode .sa-main .sa-v10-pending p,
body.sb-unified.sa-mode .sa-main .sa-v10-story-card p,
body.sb-unified.sa-mode .sa-main .sa-v10-method-note p {
  font-size: var(--ss-type-card-compact);
  line-height: 1.65;
}
body.sb-unified.sa-mode .sa-main .sa-v10-questions article > p {
  font-size: var(--ss-type-card);
  line-height: 1.7;
}
body.sb-unified.sa-mode .sa-main .sa-v10-question-state p {
  font-size: 13px;
  line-height: 1.65;
}
/* Muted text on white and on the light blue panels: checked for >=4.5:1. */
body.sb-unified.sa-mode .sa-main .sa-v10-sectionhead p,
body.sb-unified.sa-mode .sa-main .sa-v10-steps p,
body.sb-unified.sa-mode .sa-main .sa-v10-questions article > p,
body.sb-unified.sa-mode .sa-main .sa-v10-story-card p,
body.sb-unified.sa-mode .sa-main .sa-v10-pending p,
body.sb-unified.sa-mode .sa-main .sa-v10-question-state p {
  color: var(--ss-type-copy-color);
}


/* StrategySift V40 (2026-11-07): semantic colors across all layout modes.
 * Tokens only; components opt in to the relevant semantic role. No blanket
 * overrides of portfolio performance, risk, charts, dark surfaces or footer.
 * This stylesheet loads last, and custom properties still resolve in CSS
 * declared in the preceding, route-specific stylesheets.
 */
body.sb-unified {
  --ss-color-ink: #0b2545;
  --ss-color-blue: #096fa9;
  --ss-color-accent: #ff8308;
  --ss-color-on-accent: #0b2545;
  --ss-color-muted: #48647b;
  --ss-color-amber-text: #8d4b0d;
  --ss-color-surface: #f5f8fb;
  --ss-color-positive: #207347;
  --ss-color-negative: #ac3f48;
}

/* StrategySift V41 - keyboard skip link on all public and application routes.
 * Hidden off-canvas until focused; no layout shift and no permanent decoration.
 */
body.sb-unified .sb-page > .sb-skip-link {
  position: fixed;
  z-index: 99999;
  top: 10px;
  left: 12px;
  padding: 12px 16px;
  background: #082747;
  color: #fff;
  border: 2px solid #ff8308;
  border-radius: 8px;
  font-size: 14px;
  font-weight: 700;
  line-height: 1.4;
  text-decoration: none;
  transform: translateY(calc(-100% - 24px));
}
body.sb-unified .sb-page > .sb-skip-link:focus-visible {
  transform: none;
  outline: 3px solid #1687c2;
  outline-offset: 2px;
}
