/*
 * S6: безопасный визуальный адаптер самостоятельных модулей Finbridge.
 * Scope намеренно ограничен data-portal-standalone: никаких глобальных reset
 * или переопределений расчётных/операционных DOM-контрактов модулей.
 */
@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("/fonts/Montserrat-Medium.ttf") format("truetype");
}

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/fonts/Montserrat-SemiBold.ttf") format("truetype");
}

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 700 900;
  font-display: swap;
  src: url("/fonts/Montserrat-Bold.ttf") format("truetype");
}

[data-portal-standalone] {
  --portal-fb-purple: #722ea5;
  --portal-fb-lime: #d0dd28;
  --portal-fb-ink: #4e4c50;
  --portal-surface: #ffffff;
  --portal-surface-muted: #f6f3f8;
  --portal-border: rgba(114, 46, 165, 0.24);
  --portal-focus: rgba(208, 221, 40, 0.9);
  min-width: 0;
  accent-color: var(--portal-fb-purple);
  color-scheme: light;
}

/* The adapter's own system choice and an existing portal theme are both honoured. */
[data-portal-standalone][data-portal-theme="dark"],
html[data-theme="dark"] [data-portal-standalone] {
  --portal-surface: #201b24;
  --portal-surface-muted: #2a2330;
  --portal-border: rgba(208, 221, 40, 0.38);
  --portal-focus: #d0dd28;
  color-scheme: dark;
}

@media (prefers-color-scheme: dark) {
  [data-portal-standalone][data-portal-theme="dark"] {
    --portal-surface: #201b24;
    --portal-surface-muted: #2a2330;
    --portal-border: rgba(208, 221, 40, 0.38);
    --portal-focus: #d0dd28;
    color-scheme: dark;
  }
}

[data-portal-standalone] :focus-visible {
  outline: 3px solid var(--portal-focus);
  outline-offset: 3px;
}

[data-portal-standalone] a,
[data-portal-standalone] button,
[data-portal-standalone] input,
[data-portal-standalone] select,
[data-portal-standalone] summary {
  min-height: 44px;
}

[data-portal-standalone] a,
[data-portal-standalone] p,
[data-portal-standalone] h1,
[data-portal-standalone] h2,
[data-portal-standalone] h3 {
  overflow-wrap: anywhere;
}

/* Law: leave the source information architecture and action selectors intact. */
body.law-body.portal-embedded-theme {
  border-top: 4px solid var(--portal-fb-purple);
}

body.law-body.portal-embedded-theme .law-topbar {
  border-bottom: 3px solid var(--portal-fb-lime);
}

body.law-body.portal-embedded-theme .law-topbar__brand .law-brand-mark {
  background: var(--portal-fb-purple);
}

body.law-body.portal-embedded-theme .law-nav a.active,
body.law-body.portal-embedded-theme .law-nav-more__summary.active {
  box-shadow: inset 0 -2px 0 var(--portal-fb-lime);
}

body.law-body.portal-embedded-theme[data-portal-theme="dark"] {
  --law-bg: #201b24;
  --law-card: #2a2330;
  --law-text: #f3edf4;
  --law-text-2: #cfc3d2;
  --law-text-3: #b7aab9;
  --law-border: #4a3c50;
  --law-border-2: #5e4e64;
  --law-primary: #d0dd28;
  --law-primary-2: #d0dd28;
  --law-primary-soft: #33283a;
  --law-primary-text: #e7ee8a;
  --law-shadow-1: 0 1px 2px rgba(0, 0, 0, 0.28);
  --law-shadow-2: 0 4px 14px rgba(0, 0, 0, 0.42);
}

/* Venture Report: presentation tokens only; report API/action markup remains source-owned. */
body.venture-report-shell.portal-embedded-theme {
  border-top: 4px solid var(--portal-fb-purple);
}

body.venture-report-shell.portal-embedded-theme .report-masthead {
  box-shadow: inset 0 -3px 0 var(--portal-fb-lime);
}

body.venture-report-shell.portal-embedded-theme .eyebrow,
body.venture-report-shell.portal-embedded-theme .section-index,
body.venture-report-shell.portal-embedded-theme .folio {
  color: var(--portal-fb-purple);
}

body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"] {
  --forest: #f3edf4;
  --forest-deep: #17131a;
  --forest-soft: #d2c6d7;
  --paper: #201b24;
  --paper-light: #2a2330;
  --paper-dark: #342b39;
  --clay: #d0dd28;
  --clay-deep: #b8c629;
  --brass: #d0dd28;
  --brass-soft: #3a2448;
  --ink: #f3edf4;
  --ink-muted: #d2c6d7;
  --line: #695c70;
  --success: #9dd8b4;
  --warning: #f0c675;
  --danger: #ef9a8f;
  --white: #2a2330;
}

body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"]
  .eyebrow,
body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"]
  .section-index,
body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"]
  .folio {
  color: var(--clay);
}

body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"]
  .studio-summary
  > div,
body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"]
  .quality-grid
  article {
  color: #f3edf4;
}

body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"]
  :is(.studio-summary, .quality-grid)
  span {
  color: #d2c6d7;
}

body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"]
  .report-alert {
  color: #2a2330;
  background: var(--danger);
}

body.venture-report-shell.portal-embedded-theme[data-portal-theme="dark"]
  .state-badge--derived {
  color: #f3edf4;
  background: #3a2448;
  border-color: #695c70;
}

/* Reports and School receive a compact A workplace frame without fabricating data. */
.portal-standalone-page {
  position: relative;
  min-width: 0;
}

.portal-standalone-page__container {
  max-width: 1180px;
}

.portal-standalone-page__intro {
  max-width: 760px;
  margin-bottom: clamp(1.5rem, 4vw, 3rem);
  padding-left: 1rem;
  border-left: 4px solid var(--portal-fb-lime);
}

.portal-standalone-page__eyebrow {
  margin: 0 0 0.5rem;
  color: var(--portal-fb-purple);
  font-family: "Montserrat", sans-serif;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.portal-standalone-page__title {
  margin: 0;
  color: var(--portal-fb-ink);
  font-family: "Montserrat", sans-serif;
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: 800;
  line-height: 1.04;
}

.portal-standalone-page__lead {
  margin: 0.8rem 0 0;
  color: var(--color-text-secondary, #636466);
  font-size: clamp(1rem, 2vw, 1.125rem);
  line-height: 1.6;
}

.portal-standalone-card-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1rem;
}

.portal-standalone-card {
  display: grid;
  min-width: 0;
  min-height: 100%;
  padding: clamp(1.1rem, 3vw, 1.6rem);
  color: inherit;
  background: var(--portal-surface);
  border: 1px solid var(--portal-border);
  border-radius: 0.75rem;
  box-shadow: 0 10px 24px rgba(78, 76, 80, 0.08);
  text-decoration: none;
  transition:
    border-color 160ms ease,
    box-shadow 160ms ease,
    transform 160ms ease;
}

.portal-standalone-card:hover {
  border-color: var(--portal-fb-purple);
  box-shadow: 0 14px 30px rgba(114, 46, 165, 0.16);
  transform: translateY(-2px);
}

.portal-standalone-card__label {
  display: inline-flex;
  width: fit-content;
  min-height: 1.75rem;
  padding: 0.28rem 0.55rem;
  align-items: center;
  color: var(--portal-fb-ink);
  background: var(--portal-fb-lime);
  font-family: "Montserrat", sans-serif;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.portal-standalone-card h2 {
  margin: 1rem 0 0.65rem;
  color: var(--portal-fb-ink);
  font-family: "Montserrat", sans-serif;
  font-size: 1.25rem;
  line-height: 1.2;
}

.portal-standalone-card p {
  margin: 0;
  color: var(--color-text-secondary, #636466);
  line-height: 1.55;
}

[data-portal-standalone="school"] .school-card {
  border-top: 4px solid var(--portal-fb-purple);
}

[data-portal-standalone="school"] .school-card__audience {
  border: 1px solid var(--portal-border);
}

/* The Finmodel SPA owns its calculation UI. The adapter only adds safe focus/accent tokens. */
[data-portal-standalone="finmodel"].portal-embedded-theme {
  background: var(--portal-surface);
}

[data-portal-standalone="finmodel"] #root {
  min-width: 0;
}

/* Compact view: retain document flow and prevent a new page-level horizontal overflow. */
@media (max-width: 320px) {
  [data-portal-standalone] {
    overflow-x: clip;
  }

  .portal-standalone-page__intro {
    padding-left: 0.75rem;
  }

  .portal-standalone-page__title {
    font-size: 1.85rem;
  }
}

/* Phone-wide view: a little more breathing room without switching information hierarchy. */
@media (min-width: 390px) {
  .portal-standalone-card-grid {
    gap: 1.25rem;
  }

  .portal-standalone-page__intro {
    padding-left: 1.1rem;
  }
}

/* Tablet and larger: source-backed cards may compare side by side. */
@media (min-width: 768px) {
  .portal-standalone-card-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  [data-portal-standalone="reports"] .portal-standalone-card:last-child {
    grid-column: span 2;
  }
}

/* Wide desktop: reports are three equal, real destination cards. */
@media (min-width: 1440px) {
  [data-portal-standalone="reports"] .portal-standalone-card-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  [data-portal-standalone="reports"] .portal-standalone-card:last-child {
    grid-column: auto;
  }
}

/* Existing School card presentation, moved here from the page-local style block. */
[data-portal-standalone="school"] .school-card {
  min-width: 0;
}

[data-portal-standalone="school"] .school-card__desc {
  margin-bottom: var(--space-4);
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
  line-height: var(--leading-relaxed);
}

[data-portal-standalone="school"] .school-card__audience {
  margin-top: auto;
  padding: var(--space-3) var(--space-4);
  background: var(--color-primary-10);
  border-radius: var(--radius-sm);
}

[data-portal-standalone="school"] .school-card__audience-label {
  display: flex;
  margin-bottom: var(--space-1);
  gap: var(--space-1);
  align-items: center;
  color: var(--color-primary);
  font-size: var(--text-xs);
  font-weight: var(--font-weight-bold);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

[data-portal-standalone="school"] .school-card__audience-label svg {
  flex-shrink: 0;
}

[data-portal-standalone="school"] .school-card__audience-text {
  margin: 0;
  color: var(--color-text-secondary);
  font-size: var(--text-sm);
  line-height: var(--leading-snug);
}

@font-face {
  font-family: "Montserrat";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/fonts/Montserrat-Regular.ttf") format("truetype");
}
[data-portal-standalone].portal-embedded-theme {
  font-family: "Montserrat", sans-serif;
}
[data-portal-standalone] :is(button, input, textarea, select, h1, h2, h3) {
  font-family: inherit;
}
[data-portal-standalone] .portal-standalone-theme-control {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 8px;
  font-size: 12px;
  font-weight: 600;
  color: inherit;
}
[data-portal-standalone] .portal-standalone-theme-control select {
  min-height: 44px;
  max-width: 160px;
  padding: 8px 10px;
  border: 1px solid var(--portal-border);
  border-radius: 7px;
  background: var(--portal-surface);
  color: var(--portal-fb-ink);
}
[data-portal-standalone][data-portal-theme="dark"]
  .portal-standalone-theme-control
  select {
  color: #f3edf4;
}
@media (max-width: 767px) {
  [data-portal-standalone] .portal-standalone-theme-control {
    margin-left: 0;
  }
}

/* Accessibility remediation: keep contrast in the adapter's own module scopes. */
[data-portal-standalone="reports"][data-portal-theme="dark"]
  .portal-standalone-page__eyebrow,
[data-portal-standalone="school"][data-portal-theme="dark"]
  .portal-standalone-page__eyebrow,
html[data-theme="dark"]
  [data-portal-standalone="reports"]
  .portal-standalone-page__eyebrow,
html[data-theme="dark"]
  [data-portal-standalone="school"]
  .portal-standalone-page__eyebrow {
  color: var(--portal-fb-lime);
}

[data-portal-standalone="finmodel"][data-portal-theme="dark"],
html[data-theme="dark"] [data-portal-standalone="finmodel"] {
  color: #f3edf4;
  background: #201b24;
  color-scheme: dark;
}

/* The source report is light-first; only its token values are remapped here. */
[data-portal-standalone="venture-report"] {
  --clay: #ad4f38;
  --ink-muted: #52615a;
}

[data-portal-standalone="venture-report"] .button--primary {
  color: var(--white);
  background: var(--clay);
  border-color: var(--clay);
}

[data-portal-standalone="venture-report"][data-portal-theme="dark"],
html[data-theme="dark"] [data-portal-standalone="venture-report"] {
  --forest: #f3edf4;
  --forest-deep: #17131a;
  --forest-soft: #d2c6d7;
  --paper: #201b24;
  --paper-light: #2a2330;
  --paper-dark: #342b39;
  --clay: #d0dd28;
  --clay-deep: #b8c629;
  --brass: #d0dd28;
  --brass-soft: #3a2448;
  --ink: #f3edf4;
  --ink-muted: #d2c6d7;
  --line: #695c70;
  --success: #9dd8b4;
  --warning: #f0c675;
  --danger: #ef9a8f;
  --white: #2a2330;
  color: var(--ink);
  background-color: var(--paper);
  color-scheme: dark;
}

[data-portal-standalone="venture-report"][data-portal-theme="dark"]
  .report-masthead,
html[data-theme="dark"]
  [data-portal-standalone="venture-report"]
  .report-masthead,
[data-portal-standalone="venture-report"][data-portal-theme="dark"]
  .studio-summary,
[data-portal-standalone="venture-report"][data-portal-theme="dark"]
  .quality-grid,
html[data-theme="dark"]
  [data-portal-standalone="venture-report"]
  .studio-summary,
html[data-theme="dark"]
  [data-portal-standalone="venture-report"]
  .quality-grid {
  color: #f3edf4;
  background: #3a2448;
}

[data-portal-standalone="venture-report"][data-portal-theme="dark"]
  .report-masthead
  .report-wordmark--light,
html[data-theme="dark"]
  [data-portal-standalone="venture-report"]
  .report-masthead
  .report-wordmark--light,
[data-portal-standalone="venture-report"][data-portal-theme="dark"]
  .report-masthead
  .report-wordmark--light
  .report-wordmark__mark,
html[data-theme="dark"]
  [data-portal-standalone="venture-report"]
  .report-masthead
  .report-wordmark--light
  .report-wordmark__mark {
  color: #f3edf4;
}

[data-portal-standalone="venture-report"][data-portal-theme="dark"] .kpi-card,
html[data-theme="dark"] [data-portal-standalone="venture-report"] .kpi-card,
[data-portal-standalone="venture-report"][data-portal-theme="dark"]
  .kpi-card--derived,
html[data-theme="dark"]
  [data-portal-standalone="venture-report"]
  .kpi-card--derived,
[data-portal-standalone="venture-report"][data-portal-theme="dark"]
  .admin-workspace,
html[data-theme="dark"]
  [data-portal-standalone="venture-report"]
  .admin-workspace {
  background: #2a2330;
}

[data-portal-standalone="venture-report"][data-portal-theme="dark"] th,
html[data-theme="dark"] [data-portal-standalone="venture-report"] th {
  color: #f3edf4;
  background: #3a2448;
}

[data-portal-standalone="venture-report"][data-portal-theme="dark"]
  .button--secondary,
html[data-theme="dark"]
  [data-portal-standalone="venture-report"]
  .button--secondary {
  color: #f3edf4;
  background: #3a2448;
  border-color: #3a2448;
}

/* Scroll stays local and keyboard reachable; the page itself must not widen. */
[data-portal-standalone="venture-report"]
  :is(.report-nav, .chart-shell, .table-shell) {
  max-width: 100%;
  min-width: 0;
}

[data-portal-standalone="venture-report"] .chart-shell {
  width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
}

[data-portal-standalone="venture-report"]
  :is(.chart-shell, .table-shell):focus-visible {
  outline: 3px solid var(--portal-focus);
  outline-offset: 3px;
}
@media (max-width: 760px) {
  [data-portal-standalone="venture-report"] .revenue-chart,
  [data-portal-standalone="venture-report"] .admin-card {
    min-width: 0;
  }
  [data-portal-standalone="venture-report"] .table-shell--mobile {
    margin-left: -16px;
    margin-right: -16px;
    width: calc(100% + 32px);
  }
}
/* Finmodel compiled SPA: visual contrast and layout only; model state remains source-owned. */
[data-portal-standalone="finmodel"] #root,
[data-portal-standalone="finmodel"] #root > * {
  min-width: 0;
  max-width: 100%;
}

[data-portal-standalone="finmodel"]
  #root
  :is(.overflow-x-auto, .table-scroll-wrapper)[data-finmodel-a11y-scroll] {
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: visible;
}

[data-portal-standalone="finmodel"]
  #root
  [data-finmodel-a11y-scroll]:focus-visible {
  outline: 3px solid var(--portal-focus);
  outline-offset: 3px;
}

[data-portal-standalone="finmodel"] #root [data-finmodel-a11y-controls] {
  min-width: 0;
  flex-wrap: wrap;
}

[data-portal-standalone="finmodel"]
  #root
  :is(p, span, div, label, td, th, h1, h2, h3, h4, li) {
  color: #202633 !important;
}

[data-portal-standalone="finmodel"] #root :is(button, [role="button"]) {
  color: #fff !important;
  background-color: #722ea5 !important;
  border-color: #5b2483 !important;
}

[data-portal-standalone="finmodel"] #root :is(input, select, textarea) {
  color: #202633 !important;
  background-color: #fff !important;
  border-color: #5b2483 !important;
}

[data-portal-standalone="finmodel"][data-portal-theme="dark"] #root,
html[data-theme="dark"] [data-portal-standalone="finmodel"] #root {
  background: #201b24;
}

[data-portal-standalone="finmodel"][data-portal-theme="dark"]
  #root
  :is(p, span, div, label, td, th, h1, h2, h3, h4, li),
html[data-theme="dark"]
  [data-portal-standalone="finmodel"]
  #root
  :is(p, span, div, label, td, th, h1, h2, h3, h4, li) {
  color: #f7f2f8 !important;
}

[data-portal-standalone="finmodel"][data-portal-theme="dark"]
  #root
  :is(
    [class*="bg-card"],
    [class*="bg-secondary"],
    [class*="bg-muted"],
    [class*="bg-background"],
    [class*="bg-white"]
  ),
html[data-theme="dark"]
  [data-portal-standalone="finmodel"]
  #root
  :is(
    [class*="bg-card"],
    [class*="bg-secondary"],
    [class*="bg-muted"],
    [class*="bg-background"],
    [class*="bg-white"]
  ) {
  background-color: #2a2330 !important;
}

[data-portal-standalone="finmodel"][data-portal-theme="dark"]
  #root
  :is(input, select, textarea),
html[data-theme="dark"]
  [data-portal-standalone="finmodel"]
  #root
  :is(input, select, textarea) {
  color: #f7f2f8 !important;
  background-color: #2a2330 !important;
  border-color: #d0dd28 !important;
}

/* Finmodel action controls remain white-on-brand even where source spans set a text utility. */
[data-portal-standalone="finmodel"]
  #root
  :is(button, [role="button"])
  :is(p, span, div, label, h1, h2, h3, h4, li) {
  color: #fff !important;
}

[data-portal-standalone="finmodel"] #root [data-finmodel-a11y-controls] {
  flex-shrink: 1 !important;
}

@media (max-width: 320px) {
  [data-portal-standalone="finmodel"] #root [data-finmodel-a11y-controls] {
    width: 100%;
  }

  [data-portal-standalone="finmodel"]
    #root
    [data-finmodel-a11y-controls]
    > button {
    flex: 1 1 auto;
    white-space: normal;
  }
}
