:root {
  --background: #eef2f7;
  --card: #ffffff;
  --card-soft: #f8fafc;
  --text: #111827;
  --muted: #64748b;
  --muted-light: #94a3b8;
  --line: #e2e8f0;
  --navy: #17346d;
  --navy-light: #2854a3;
  --blue-soft: #eff6ff;
  --green: #15803d;
  --green-soft: #f0fdf4;
  --red: #dc2626;
  --red-soft: #fef2f2;
  --amber: #d97706;
  --amber-soft: #fffbeb;
  --violet: #7c3aed;
  --violet-soft: #f5f3ff;
  --shadow: 0 12px 32px rgba(15, 23, 42, 0.07);
}

* {
  box-sizing: border-box;
}

html {
  background: var(--background);
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background:
    radial-gradient(circle at top right, rgba(59, 130, 246, 0.08), transparent 30rem),
    var(--background);
  color: var(--text);
  font-family:
    Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI",
    sans-serif;
  line-height: 1.5;
}

button,
input {
  font: inherit;
}

a {
  color: inherit;
}

.appShell,
.pageShell {
  min-height: 100vh;
}

.pageShell {
  width: min(1280px, calc(100% - 32px));
  margin: 0 auto;
  padding: 20px 0 34px;
}

.hero {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 24px;
  min-height: 154px;
  padding: 24px 28px;
  border-radius: 18px;
  color: white;
  background:
    linear-gradient(120deg, rgba(255, 255, 255, 0.08), transparent 46%),
    linear-gradient(135deg, #17346d, #2352a0);
  box-shadow: 0 18px 50px rgba(23, 52, 109, 0.2);
}

.eyebrow {
  margin-bottom: 3px;
  color: #bfdbfe;
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.11em;
  text-transform: uppercase;
}

.hero h1 {
  margin: 0;
  font-size: clamp(2rem, 5vw, 3rem);
  line-height: 1.04;
  letter-spacing: -0.045em;
}

.heroMeta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  margin-top: 10px;
  color: #dbeafe;
  font-size: 0.9rem;
}

.heroActions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.sourcePill,
.refreshButton {
  min-height: 42px;
  border: 1px solid rgba(255, 255, 255, 0.23);
  border-radius: 10px;
  color: white;
  background: rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(8px);
}

.sourcePill {
  display: inline-flex;
  align-items: center;
  padding: 0 13px;
  font-size: 0.82rem;
  white-space: nowrap;
}

.refreshButton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 0 14px;
  cursor: pointer;
  font-weight: 750;
}

.refreshButton:hover:not(:disabled) {
  background: rgba(255, 255, 255, 0.18);
}

.refreshButton:disabled {
  cursor: wait;
  opacity: 0.72;
}

.tabBar {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  gap: 6px;
  margin-top: 14px;
  padding: 7px;
  overflow-x: auto;
  border: 1px solid rgba(226, 232, 240, 0.96);
  border-radius: 13px;
  background: rgba(255, 255, 255, 0.94);
  box-shadow: 0 8px 26px rgba(15, 23, 42, 0.07);
  backdrop-filter: blur(12px);
  scrollbar-width: thin;
}

.tabButton {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 38px;
  padding: 0 12px;
  border: 0;
  border-radius: 8px;
  color: #475569;
  background: transparent;
  cursor: pointer;
  font-size: 0.83rem;
  font-weight: 720;
  white-space: nowrap;
}

.tabButton small {
  display: inline-grid;
  min-width: 21px;
  height: 21px;
  place-items: center;
  padding: 0 5px;
  border-radius: 10px;
  color: #64748b;
  background: #f1f5f9;
  font-size: 0.68rem;
}

.tabButton:hover {
  color: var(--navy);
  background: #f8fafc;
}

.tabButton.isActive {
  color: white;
  background: var(--navy);
}

.tabButton.isActive small {
  color: var(--navy);
  background: white;
}

.tabPanel {
  display: none;
  margin-top: 14px;
  padding: 20px;
  border: 1px solid rgba(226, 232, 240, 0.95);
  border-radius: 16px;
  background: var(--card);
  box-shadow: var(--shadow);
}

.tabPanel.isActive {
  display: block;
}

.panelHeader {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}

.panelTitle {
  display: flex;
  align-items: center;
  gap: 9px;
}

.panelTitle > span {
  font-size: 1.15rem;
}

.panelTitle h2 {
  margin: 0;
  color: var(--navy);
  font-size: 1.25rem;
  letter-spacing: -0.02em;
}

.panelMeta {
  color: var(--muted);
  font-size: 0.78rem;
  text-align: right;
}

.kpiGrid {
  display: grid;
  gap: 12px;
}

.kpiGrid--four {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.kpiCard {
  min-height: 136px;
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--card);
  box-shadow: 0 7px 22px rgba(15, 23, 42, 0.05);
}

.kpiTop {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  color: var(--muted);
  font-size: 0.79rem;
  font-weight: 720;
}

.kpiIcon {
  font-size: 1.05rem;
}

.kpiValue {
  margin-top: 18px;
  font-size: clamp(1.5rem, 2.2vw, 2rem);
  font-weight: 850;
  letter-spacing: -0.04em;
}

.kpiDetail {
  margin-top: 4px;
  color: var(--muted);
  font-size: 0.77rem;
}

.positive {
  color: var(--green) !important;
}

.negative {
  color: var(--red) !important;
}

.neutral {
  color: var(--muted) !important;
}

.priorityStrip {
  display: grid;
  grid-template-columns: 132px 1fr;
  gap: 14px;
  align-items: center;
  margin-top: 13px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 13px;
  background: var(--card);
}

.priorityTitle {
  color: var(--navy);
  font-size: 0.88rem;
  font-weight: 850;
}

.priorityItems {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.priorityItem {
  display: flex;
  gap: 8px;
  align-items: flex-start;
  min-height: 54px;
  padding: 9px 10px;
  border-radius: 9px;
  background: var(--card-soft);
}

.priorityItem > span {
  display: grid;
  width: 23px;
  height: 23px;
  flex: 0 0 23px;
  place-items: center;
  border-radius: 50%;
  color: white;
  background: var(--navy-light);
  font-size: 0.68rem;
  font-weight: 850;
}

.priorityItem p {
  margin: 1px 0 0;
  font-size: 0.82rem;
  font-weight: 640;
}

.overviewGrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 11px;
  margin-top: 13px;
}

.overviewCard {
  display: flex;
  min-height: 180px;
  flex-direction: column;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--card-soft);
}

.overviewCardHeader {
  display: flex;
  align-items: center;
  gap: 8px;
}

.overviewCard h2 {
  margin: 0;
  color: var(--navy);
  font-size: 0.94rem;
}

.overviewCard p {
  margin: 14px 0;
  color: #334155;
  font-size: 0.84rem;
}

.overviewCard button {
  margin-top: auto;
  padding: 0;
  border: 0;
  color: #2563eb;
  background: transparent;
  cursor: pointer;
  font-size: 0.78rem;
  font-weight: 750;
  text-align: left;
}

.moverRows {
  display: grid;
  gap: 8px;
  margin: 14px 0;
}

.moverRow {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 8px;
  border-radius: 8px;
  background: white;
  font-size: 0.8rem;
}

.moverRow span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.miniKpiGrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 9px;
  margin-bottom: 14px;
}

.miniKpi {
  display: flex;
  min-height: 88px;
  flex-direction: column;
  justify-content: center;
  padding: 12px 14px;
  border: 1px solid #edf1f5;
  border-radius: 10px;
  background: var(--card-soft);
}

.miniKpi > span {
  color: var(--muted);
  font-size: 0.74rem;
}

.miniKpi > strong {
  margin-top: 3px;
  font-size: 1.28rem;
  letter-spacing: -0.025em;
}

.miniKpi > small {
  margin-top: 2px;
  color: var(--muted);
  font-size: 0.72rem;
}

.insightBox,
.warningBox,
.trainingRecommendation,
.playgroundIntro,
.statusIntro {
  margin: 11px 0;
  padding: 12px 14px;
  border-radius: 10px;
}

.insightBox {
  border: 1px solid #dbeafe;
  color: #1e3a8a;
  background: var(--blue-soft);
}

.insightBox strong,
.trainingRecommendation > strong {
  display: block;
  margin-bottom: 3px;
  font-size: 0.72rem;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.insightBox p,
.trainingRecommendation p {
  margin: 0;
  color: var(--text);
  font-size: 0.86rem;
}

.warningBox {
  border: 1px solid #fde68a;
  color: #92400e;
  background: var(--amber-soft);
  font-size: 0.83rem;
}

.warningBox ul {
  margin: 5px 0 0;
  padding-left: 19px;
}

.subsection {
  margin-top: 17px;
}

.subsection h3,
.calendarColumn h3 {
  margin: 0 0 9px;
  color: var(--muted);
  font-size: 0.73rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.recommendationGrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.recommendationCard {
  display: grid;
  grid-template-columns: 86px 1fr;
  gap: 10px;
  align-items: start;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card-soft);
}

.recommendationCard p {
  margin: 2px 0 0;
  color: var(--muted);
  font-size: 0.8rem;
}

.actionPill {
  display: inline-flex;
  justify-content: center;
  padding: 4px 6px;
  border-radius: 6px;
  font-size: 0.68rem;
  font-weight: 820;
}

.actionPill--buy {
  color: var(--green);
  background: var(--green-soft);
}

.actionPill--sell {
  color: var(--red);
  background: var(--red-soft);
}

.actionPill--hold {
  color: var(--amber);
  background: var(--amber-soft);
}

.actionPill--check {
  color: #2563eb;
  background: var(--blue-soft);
}

.tableWrap {
  width: 100%;
  margin-top: 16px;
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: 10px;
}

.financeTableWrap {
  max-width: 1060px;
  margin-right: auto;
  margin-left: auto;
}

.dataTable {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: 0.78rem;
}

.dataTable th {
  padding: 9px 10px;
  color: #475569;
  background: #f1f5f9;
  text-align: left;
  white-space: nowrap;
}

.dataTable td {
  padding: 9px 10px;
  border-top: 1px solid #eef2f7;
  vertical-align: middle;
}

.dataTable tbody tr:nth-child(even) {
  background: #fbfdff;
}

.dataTable tfoot td {
  border-top: 2px solid var(--line);
  background: var(--card-soft);
}

.financeTable {
  min-width: 850px;
}

.financeTable .colPosition {
  width: 210px;
}

.financeTable .colType {
  width: 68px;
}

.financeTable .colPieces {
  width: 68px;
}

.financeTable .colPrice {
  width: 92px;
}

.financeTable .colValue {
  width: 96px;
}

.financeTable .colDelta {
  width: 112px;
}

.financeTable .colPnl {
  width: 116px;
}

.positionCell strong,
.positionCell span,
.dataTable td > span {
  display: block;
}

.positionCell strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.positionCell span,
.dataTable td > span {
  margin-top: 2px;
  color: var(--muted-light);
  font-size: 0.67rem;
}

.alignRight {
  text-align: right !important;
}

.trainingRecommendation {
  display: grid;
  grid-template-columns: 145px 1fr;
  border: 1px solid #bbf7d0;
  background: var(--green-soft);
}


.trainingTableWrap {
  max-width: 720px;
  margin-top: 12px;
}

.trainingTable {
  min-width: 650px;
}

.trainingTable th:first-child {
  width: 145px;
}

.trainingSideCard {
  margin-top: 12px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card-soft);
}

.sideLabel {
  display: block;
  margin-bottom: 9px;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.trainingSideRow {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 0;
  border-top: 1px solid #e9eef4;
  font-size: 0.8rem;
}

.trainingSideRow:first-of-type {
  border-top: 0;
}

.activityGrid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
}

.activityCard {
  display: flex;
  gap: 9px;
  min-height: 116px;
  padding: 11px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card-soft);
}

.activityIcon {
  font-size: 1.25rem;
}

.activityCard strong,
.activityCard span {
  display: block;
}

.activityCard span,
.activityCard p {
  color: var(--muted);
  font-size: 0.71rem;
}

.activityCard p {
  margin: 4px 0 0;
}

.newsList {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.newsRow {
  display: grid;
  grid-template-columns: 29px 1fr;
  gap: 9px;
  align-items: start;
  padding: 10px;
  border: 1px solid var(--line);
  border-radius: 9px;
  text-decoration: none;
}

a.newsRow:hover {
  border-color: #93c5fd;
  background: #f8fbff;
}

.newsIndex {
  display: grid;
  width: 25px;
  height: 25px;
  place-items: center;
  border-radius: 7px;
  color: white;
  background: var(--navy-light);
  font-size: 0.68rem;
  font-weight: 850;
}

.newsRow strong,
.newsRow span {
  display: block;
}

.newsRow strong {
  font-size: 0.83rem;
}

.newsRow div > span {
  margin-top: 3px;
  color: var(--muted);
  font-size: 0.68rem;
}

.calendarColumns {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(300px, 1fr);
  gap: 16px;
}

.calendarList {
  display: grid;
  gap: 8px;
}

.calendarCard,
.birthdayCard {
  display: grid;
  grid-template-columns: 105px 1fr;
  gap: 12px;
  padding: 10px;
  border: 1px solid var(--line);
  border-left: 4px solid #3b82f6;
  border-radius: 9px;
}

.calendarCard--gray {
  border-left-color: #94a3b8;
  background: #fafafa;
}

.birthdayCard {
  border-left-color: #f59e0b;
  background: #fffbeb;
}

.calendarDate {
  align-self: start;
  padding: 6px 7px;
  border-radius: 7px;
  color: #1e3a8a;
  background: var(--blue-soft);
  font-size: 0.73rem;
  font-weight: 820;
  text-align: center;
}

.calendarDate--birthday {
  color: #92400e;
  background: #fef3c7;
}

.calendarCard strong,
.calendarCard span,
.birthdayCard strong,
.birthdayCard span {
  display: block;
}

.calendarCard span,
.birthdayCard span,
.calendarCard p {
  color: var(--muted);
  font-size: 0.76rem;
}

.calendarCard p {
  margin: 3px 0 0;
}

.jobGrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
}

.jobCard {
  display: flex;
  min-height: 145px;
  flex-direction: column;
  justify-content: space-between;
  padding: 13px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card-soft);
  text-decoration: none;
}

a.jobCard:hover {
  transform: translateY(-1px);
  border-color: #93c5fd;
  box-shadow: 0 7px 18px rgba(37, 99, 235, 0.09);
}

.jobTopline,
.jobMeta {
  display: flex;
  justify-content: space-between;
  gap: 8px;
}

.jobTopline {
  color: var(--muted);
  font-size: 0.66rem;
  text-transform: uppercase;
}

.jobCard h3 {
  margin: 13px 0;
  font-size: 0.9rem;
  line-height: 1.34;
}

.jobMeta {
  align-items: end;
  color: var(--muted);
  font-size: 0.72rem;
}

.jobMeta strong {
  color: var(--navy);
  text-align: right;
}

.statusIntro {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  border: 1px solid #dbeafe;
  background: var(--blue-soft);
}

.statusIntro div {
  display: flex;
  flex-direction: column;
}

.statusIntro strong {
  color: #1e3a8a;
  font-size: 0.72rem;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

.statusIntro span {
  margin-top: 2px;
  font-weight: 750;
}

.statusCards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 13px;
}

.statusCard {
  min-height: 160px;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--card-soft);
}

.statusCardTop {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.statusIcon {
  font-size: 1.2rem;
}

.statusState {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 7px;
  border-radius: 999px;
  font-size: 0.68rem;
  font-weight: 800;
}

.statusState i {
  width: 7px;
  height: 7px;
  border-radius: 50%;
}

.statusState--ok {
  color: var(--green);
  background: var(--green-soft);
}

.statusState--ok i {
  background: #22c55e;
}

.statusState--warning {
  color: var(--amber);
  background: var(--amber-soft);
}

.statusState--warning i {
  background: #f59e0b;
}

.statusState--preserved {
  color: var(--violet);
  background: var(--violet-soft);
}

.statusState--preserved i {
  background: var(--violet);
}

.statusCard h3 {
  margin: 18px 0 3px;
  color: var(--navy);
  font-size: 0.94rem;
}

.statusCard time {
  color: var(--text);
  font-size: 1rem;
  font-weight: 820;
}

.statusCard p {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: 0.74rem;
}

.playgroundIntro {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 16px;
  border: 1px solid #ddd6fe;
  border-radius: 11px;
  color: #5b21b6;
  background: var(--violet-soft);
  font-size: 0.86rem;
}

.playgroundIntro > div:first-child {
  display: grid;
  gap: 3px;
}

.playgroundIntro strong,
.playgroundIntro span {
  display: block;
}

.playgroundSelectionSummary {
  flex: 0 0 auto;
  padding: 7px 10px;
  border: 1px solid #c4b5fd;
  border-radius: 999px;
  color: #4c1d95;
  background: rgba(255, 255, 255, 0.76);
  font-size: 0.72rem;
  font-weight: 820;
  white-space: nowrap;
}

.playgroundWorkspace {
  display: grid;
  grid-template-columns: minmax(240px, 285px) minmax(0, 1fr);
  gap: 14px;
  margin-top: 14px;
  align-items: start;
}

.playgroundPicker {
  display: grid;
  gap: 7px;
  position: sticky;
  top: 12px;
  max-height: calc(100vh - 32px);
  padding-right: 3px;
  overflow-y: auto;
}

.playgroundModuleButton {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 9px;
  width: 100%;
  padding: 11px;
  border: 1px solid var(--border);
  border-radius: 11px;
  color: var(--text);
  background: white;
  text-align: left;
  cursor: pointer;
  transition: border-color 140ms ease, box-shadow 140ms ease, transform 140ms ease;
}

.playgroundModuleButton:hover {
  border-color: #a78bfa;
  transform: translateY(-1px);
}

.playgroundModuleButton.isActive {
  border-color: #7c3aed;
  box-shadow: inset 3px 0 #7c3aed, 0 7px 18px rgba(76, 29, 149, 0.08);
  background: #faf8ff;
}

.playgroundModuleButton > span:last-child {
  display: grid;
  gap: 3px;
}

.playgroundModuleButton strong {
  color: var(--navy);
  font-size: 0.84rem;
}

.playgroundModuleButton small {
  color: var(--muted);
  font-size: 0.69rem;
  line-height: 1.35;
}

.playgroundModuleButton em {
  color: #6d28d9;
  font-size: 0.64rem;
  font-style: normal;
  font-weight: 800;
}

.playgroundIcon {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: #f2efff;
  font-size: 1.15rem;
}

.playgroundPreview,
.playgroundConceptPanel {
  min-width: 0;
}

.playgroundConceptPanel {
  padding: 19px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(23, 52, 109, 0.05);
}

.playgroundConceptPanel[hidden] {
  display: none;
}

.playgroundConceptLead {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 28px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--border);
}

.playgroundConceptLead > div {
  min-width: 0;
}

.playgroundConceptLead span,
.playgroundPropertyHead span {
  color: #6d28d9;
  font-size: 0.65rem;
  font-weight: 850;
  letter-spacing: 0.08em;
}

.playgroundConceptLead h3 {
  margin: 3px 0 0;
  color: var(--navy);
  font-size: 1.28rem;
}

.playgroundConceptLead p {
  max-width: 520px;
  margin: 0;
  color: var(--muted);
  font-size: 0.78rem;
  line-height: 1.48;
}

.playgroundMetricGrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 9px;
  margin-top: 14px;
}

.playgroundMetric {
  display: grid;
  align-content: start;
  gap: 5px;
  min-height: 96px;
  padding: 13px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--card-soft);
}

.playgroundMetric > span {
  color: var(--muted);
  font-size: 0.67rem;
  font-weight: 820;
  text-transform: uppercase;
}

.playgroundMetric strong {
  color: var(--navy);
  font-size: 1.05rem;
  overflow-wrap: anywhere;
}

.playgroundMetric small {
  color: var(--muted);
  font-size: 0.67rem;
}

.playgroundMetric--blue { border-color: #bfdbfe; background: #eff6ff; }
.playgroundMetric--green { border-color: #bbf7d0; background: #f0fdf4; }
.playgroundMetric--violet { border-color: #ddd6fe; background: #faf5ff; }
.playgroundMetric--amber { border-color: #fde68a; background: #fffbeb; }
.playgroundMetric--muted { border-style: dashed; }

.playgroundSplit,
.playgroundReviewGrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 10px;
}

.playgroundMiniPanel,
.playgroundPropertyCard {
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: #fff;
}

.playgroundMiniPanel h4 {
  margin: 0 0 10px;
  color: var(--navy);
  font-size: 0.82rem;
}

.playgroundMiniPanel p,
.playgroundMiniPanel li,
.playgroundMiniPanel label {
  color: var(--text);
  font-size: 0.75rem;
  line-height: 1.5;
}

.playgroundMiniPanel ul {
  margin: 0;
  padding-left: 18px;
}

.playgroundReviewGrid .playgroundMiniPanel:first-child {
  display: grid;
  gap: 9px;
}

.playgroundReviewGrid label {
  display: flex;
  align-items: center;
  gap: 8px;
}

.playgroundReviewGrid p {
  margin: 0;
}

.playgroundReviewGrid small {
  display: block;
  margin-top: 8px;
  color: var(--muted);
  font-size: 0.65rem;
}

.playgroundBarRow {
  display: grid;
  gap: 5px;
  margin-top: 9px;
}

.playgroundBarRow > div:first-child {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  font-size: 0.71rem;
}

.playgroundBarRow span {
  color: var(--muted);
}

.playgroundBarTrack {
  height: 6px;
  border-radius: 99px;
  background: #e7edf7;
  overflow: hidden;
}

.playgroundBarTrack i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #3b82f6, #7c3aed);
}

.playgroundActionList,
.playgroundJobPreview,
.playgroundJournalTable {
  display: grid;
  gap: 8px;
  margin-top: 14px;
}

.playgroundActionList article,
.playgroundJobPreview article {
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--card-soft);
}

.playgroundActionList article > div,
.playgroundJobPreview article > div:first-child {
  display: grid;
  flex: 1;
  min-width: 0;
  gap: 3px;
}

.playgroundActionList strong,
.playgroundJobPreview strong {
  color: var(--navy);
  font-size: 0.78rem;
}

.playgroundActionList small,
.playgroundJobPreview small,
.playgroundJobPreview span {
  color: var(--muted);
  font-size: 0.68rem;
}

.playgroundActionList button {
  padding: 6px 9px;
  border: 1px solid #bfdbfe;
  border-radius: 8px;
  color: #1d4ed8;
  background: #eff6ff;
  font-size: 0.67rem;
  font-weight: 800;
}

.playgroundActionIcon {
  font-size: 1.05rem;
}

.playgroundDemoTag {
  flex: 0 0 auto;
  padding: 4px 7px;
  border-radius: 7px;
  color: #6d28d9;
  background: #ede9fe;
  font-size: 0.64rem;
  font-weight: 800;
}

.playgroundPipeline {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 7px;
  margin-top: 14px;
}

.playgroundPipeline span {
  display: flex;
  justify-content: space-between;
  padding: 9px 10px;
  border: 1px solid #dbeafe;
  border-radius: 9px;
  color: var(--muted);
  background: #f8fbff;
  font-size: 0.7rem;
}

.playgroundPipeline b {
  color: var(--navy);
}

.playgroundScore {
  display: grid !important;
  flex: 0 0 42px !important;
  place-items: center;
  gap: 0 !important;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  color: #6d28d9;
  background: #ede9fe;
}

.playgroundScore b { font-size: 0.9rem; }
.playgroundScore span { font-size: 0.58rem; }

.playgroundJournalHead,
.playgroundJournalRow {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(100px, 1fr) minmax(110px, 1fr);
  gap: 10px;
  align-items: center;
  padding: 9px 11px;
}

.playgroundJournalHead {
  color: var(--muted);
  background: #eef2f7;
  font-size: 0.65rem;
  font-weight: 820;
}

.playgroundJournalRow {
  border: 1px solid var(--border);
  border-radius: 9px;
  font-size: 0.72rem;
}

.playgroundJournalRow strong { color: var(--navy); }
.playgroundJournalRow span { color: var(--muted); }
.playgroundJournalRow .isOpen { color: #b45309; }

.playgroundHint {
  margin-top: 11px;
  padding: 11px 13px;
  border-left: 3px solid #8b5cf6;
  border-radius: 0 9px 9px 0;
  color: #4c1d95;
  background: #faf5ff;
  font-size: 0.72rem;
  line-height: 1.45;
}

.playgroundPropertyCard {
  margin-top: 14px;
  background: var(--card-soft);
}

.playgroundPropertyHead {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.playgroundPropertyHead > div {
  display: grid;
  gap: 3px;
}

.playgroundPropertyHead strong { color: var(--navy); }
.playgroundMetricGrid--compact { margin-top: 12px; }

.playgroundPropertyTasks {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 11px;
}

.playgroundPropertyTasks span {
  padding: 6px 8px;
  border-radius: 8px;
  color: var(--muted);
  background: white;
  font-size: 0.68rem;
}

.realEstateScope {
  display: grid;
  gap: 6px;
  margin-top: 11px;
  padding: 12px 14px;
  border: 1px solid #dbeafe;
  border-radius: 11px;
  color: #38506f;
  background: #f8fbff;
  font-size: 0.7rem;
  line-height: 1.45;
}

.realEstateScope strong { color: var(--navy); font-size: 0.75rem; }
.realEstateScope ul { margin: 2px 0 0; padding-left: 17px; }

.realEstatePropertyTabs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-top: 14px;
}

.realEstatePropertyTabs button {
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 11px 12px;
  border: 1px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  background: #fff;
  text-align: left;
  cursor: pointer;
}

.realEstatePropertyTabs button:hover { border-color: #a78bfa; }
.realEstatePropertyTabs button.isActive { border-color: #7c3aed; box-shadow: inset 0 3px #7c3aed; background: #faf8ff; }
.realEstatePropertyTabs strong { color: var(--navy); font-size: 0.78rem; }
.realEstatePropertyTabs small { color: var(--muted); font-size: 0.63rem; overflow-wrap: anywhere; }

.realEstatePanels { margin-top: 10px; }
.realEstateDossier { padding: 15px; border: 1px solid #ddd6fe; border-radius: 12px; background: #fff; }
.realEstateDossier[hidden] { display: none; }

.realEstateDossierHead {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 11px;
  border-bottom: 1px solid var(--border);
}

.realEstateDossierHead > div { min-width: 0; }
.realEstateDossierHead span { color: #6d28d9; font-size: 0.62rem; font-weight: 850; letter-spacing: 0.07em; text-transform: uppercase; }
.realEstateDossierHead h4 { margin: 3px 0 2px; color: var(--navy); font-size: 1rem; }
.realEstateDossierHead p { margin: 0; color: var(--muted); font-size: 0.68rem; line-height: 1.4; }
.realEstateDossierHead > small { flex: 0 0 auto; padding: 5px 7px; border-radius: 7px; color: #38506f; background: #eef4fb; font-size: 0.61rem; }

.realEstateAlertGrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 10px;
}

.realEstateAlert { padding: 10px 11px; border-left: 3px solid #3b82f6; border-radius: 0 9px 9px 0; background: #eff6ff; }
.realEstateAlert--warning { border-color: #f59e0b; background: #fffbeb; }
.realEstateAlert strong { color: var(--navy); font-size: 0.7rem; }
.realEstateAlert p { margin: 3px 0 0; color: var(--muted); font-size: 0.64rem; line-height: 1.42; }

.realEstateFactGroups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 9px;
  margin-top: 10px;
  align-items: start;
}

.realEstateFactGroup { min-width: 0; border: 1px solid var(--border); border-radius: 10px; background: var(--card-soft); overflow: hidden; }
.realEstateFactGroup summary { display: flex; align-items: center; justify-content: space-between; gap: 9px; padding: 11px 12px; color: var(--navy); background: #f4f7fb; font-size: 0.73rem; font-weight: 820; cursor: pointer; }
.realEstateFactGroup summary small { color: var(--muted); font-size: 0.59rem; font-weight: 700; }
.realEstateFactList { display: grid; padding: 0 11px 7px; }

.realEstateFact {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
  padding: 9px 0;
  border-top: 1px solid var(--border);
}

.realEstateFact > div { display: grid; min-width: 0; gap: 2px; }
.realEstateFact span { color: var(--muted); font-size: 0.61rem; font-weight: 760; text-transform: uppercase; }
.realEstateFact strong { color: var(--navy); font-size: 0.73rem; overflow-wrap: anywhere; }
.realEstateFact small { color: var(--muted); font-size: 0.62rem; line-height: 1.4; overflow-wrap: anywhere; }

.realEstateState { flex: 0 0 auto; padding: 3px 5px; border-radius: 6px; color: #38506f; background: #e8eef6; font-size: 0.53rem; font-style: normal; font-weight: 820; }
.realEstateState--current,
.realEstateState--verified { color: #166534; background: #dcfce7; }
.realEstateState--historic { color: #64748b; background: #e2e8f0; }
.realEstateState--derived { color: #5b21b6; background: #ede9fe; }
.realEstateState--future { color: #1d4ed8; background: #dbeafe; }
.realEstateState--open { color: #92400e; background: #fef3c7; }

.realEstateSources { margin-top: 10px; border: 1px dashed #cbd5e1; border-radius: 10px; background: #fff; }
.realEstateSources > summary { display: flex; justify-content: space-between; gap: 10px; padding: 10px 12px; color: var(--navy); font-size: 0.7rem; font-weight: 820; cursor: pointer; }
.realEstateSources > summary span { color: var(--muted); font-size: 0.61rem; }
.realEstateSources > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; padding: 0 10px 10px; }
.realEstateSources article { display: grid; grid-template-columns: 70px minmax(0, 1fr); gap: 2px 8px; padding: 8px; border-radius: 8px; background: var(--card-soft); }
.realEstateSources time { grid-row: 1 / span 2; color: #6d28d9; font-size: 0.58rem; font-weight: 800; }
.realEstateSources strong { color: var(--navy); font-size: 0.65rem; }
.realEstateSources small { color: var(--muted); font-size: 0.56rem; line-height: 1.35; overflow-wrap: anywhere; }

.realEstateScenarioWrap { margin-top: 14px; padding-top: 12px; border-top: 1px solid var(--border); }
.realEstateScenarioWrap > h4 { margin: 0 0 8px; color: var(--navy); font-size: 0.78rem; }
.realEstateScenario { border: 1px solid #fcd34d; border-radius: 10px; background: #fffbeb; overflow: hidden; }
.realEstateScenario > summary { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 12px; cursor: pointer; }
.realEstateScenario > summary > div { display: grid; gap: 2px; }
.realEstateScenario > summary span { color: #92400e; font-size: 0.57rem; font-weight: 850; text-transform: uppercase; }
.realEstateScenario > summary strong { color: var(--navy); font-size: 0.72rem; }
.realEstateScenario > summary em { flex: 0 0 auto; padding: 4px 6px; border-radius: 6px; color: #92400e; background: #fef3c7; font-size: 0.55rem; font-style: normal; font-weight: 850; }
.realEstateScenario > p { margin: 0; padding: 0 12px 9px; color: var(--muted); font-size: 0.64rem; }
.realEstateScenarioGrid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 7px; padding: 0 10px 10px; }
.realEstateScenarioGrid article { display: grid; gap: 3px; padding: 9px; border: 1px solid #fde68a; border-radius: 8px; background: white; }
.realEstateScenarioGrid span { color: var(--muted); font-size: 0.58rem; text-transform: uppercase; }
.realEstateScenarioGrid strong { color: var(--navy); font-size: 0.7rem; }
.realEstateScenarioGrid small { color: var(--muted); font-size: 0.59rem; line-height: 1.35; }

.playgroundTimeline {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 7px;
  margin-top: 14px;
}

.playgroundTimeline > div {
  display: grid;
  gap: 4px;
  min-height: 92px;
  padding: 11px;
  border-top: 4px solid #94a3b8;
  border-radius: 8px;
  background: #f8fafc;
}

.playgroundTimeline .isRecovery { border-color: #22c55e; background: #f0fdf4; }
.playgroundTimeline .isTravel { border-color: #f59e0b; background: #fffbeb; }
.playgroundTimeline .isRace { border-color: #7c3aed; background: #faf5ff; }
.playgroundTimeline span { color: var(--muted); font-size: 0.62rem; }
.playgroundTimeline strong { color: var(--navy); font-size: 0.76rem; }
.playgroundTimeline small { color: var(--muted); font-size: 0.63rem; }

.playgroundCompactRow {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr) auto;
  gap: 9px;
  padding: 7px 0;
  border-top: 1px solid var(--border);
  font-size: 0.7rem;
}

.playgroundCompactRow span,
.playgroundCompactRow small { color: var(--muted); }
.playgroundCompactRow strong { color: var(--navy); }

.playgroundTravelCards,
.playgroundDossierGrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
  margin-top: 14px;
}

.playgroundTravelCards article,
.playgroundDossierGrid article {
  display: grid;
  align-content: start;
  gap: 7px;
  min-height: 132px;
  padding: 13px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--card-soft);
}

.playgroundTravelCards article.isActive {
  border-color: #86efac;
  box-shadow: inset 0 3px #22c55e;
  background: #f0fdf4;
}

.playgroundTravelCards span,
.playgroundDossierGrid em {
  color: var(--muted);
  font-size: 0.62rem;
  font-style: normal;
}

.playgroundTravelCards strong,
.playgroundDossierGrid strong { color: var(--navy); font-size: 0.8rem; }
.playgroundTravelCards p { margin: 0; color: var(--muted); font-size: 0.69rem; line-height: 1.45; }

.playgroundDossierGrid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.playgroundDossierGrid article > span { font-size: 1.25rem; }
.playgroundDossierGrid small { color: var(--muted); font-size: 0.68rem; line-height: 1.4; }
.playgroundDossierGrid em { margin-top: auto; color: #6d28d9; }

.playgroundConceptEmpty {
  padding: 16px;
  border: 1px dashed var(--border);
  border-radius: 9px;
  color: var(--muted);
  background: var(--card-soft);
  font-size: 0.72rem;
  text-align: center;
}

.playgroundVoteBar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-top: 16px;
  padding: 12px;
  border: 1px solid #ddd6fe;
  border-radius: 11px;
  background: #faf8ff;
}

.playgroundVoteBar > div:first-child {
  display: grid;
  gap: 3px;
}

.playgroundVoteBar strong { color: #4c1d95; font-size: 0.76rem; }
.playgroundVoteBar span { color: var(--muted); font-size: 0.65rem; }

.playgroundVoteButtons {
  display: flex;
  flex: 0 0 auto;
  gap: 6px;
}

.playgroundVoteButtons button {
  padding: 7px 9px;
  border: 1px solid #c4b5fd;
  border-radius: 8px;
  color: #5b21b6;
  background: white;
  font-size: 0.67rem;
  font-weight: 800;
  cursor: pointer;
}

.playgroundVoteButtons button:hover,
.playgroundVoteButtons button.isSelected {
  color: white;
  border-color: #6d28d9;
  background: #6d28d9;
}

@media (max-width: 1100px) {
  .playgroundWorkspace { grid-template-columns: 220px minmax(0, 1fr); }
  .playgroundMetricGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .playgroundTimeline { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .playgroundDossierGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .realEstateFactGroups,
  .realEstateScenarioGrid { grid-template-columns: 1fr; }
}

@media (max-width: 850px) {
  .playgroundWorkspace { grid-template-columns: 1fr; }
  .playgroundPicker {
    position: static;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    max-height: none;
    padding: 0;
  }
  .playgroundConceptLead { flex-direction: column; gap: 7px; }
  .playgroundConceptLead p { max-width: none; }
}

@media (max-width: 620px) {
  .playgroundIntro {
    align-items: flex-start;
    flex-direction: column;
    gap: 9px;
  }
  .playgroundSelectionSummary { white-space: normal; }
  .playgroundPicker { grid-template-columns: 1fr; }
  .playgroundModuleButton { padding: 10px; }
  .playgroundModuleButton small { display: none; }
  .playgroundConceptPanel { padding: 12px; border-radius: 11px; }
  .playgroundConceptLead h3 { font-size: 1.05rem; }
  .playgroundMetricGrid,
  .playgroundSplit,
  .playgroundReviewGrid,
  .playgroundTravelCards,
  .playgroundDossierGrid { grid-template-columns: 1fr; }
  .playgroundMetricGrid--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .playgroundMetric { min-height: 82px; padding: 10px; }
  .realEstatePropertyTabs { display: flex; margin-inline: -12px; padding: 0 12px 3px; overflow-x: auto; }
  .realEstatePropertyTabs button { flex: 0 0 min(210px, 76vw); }
  .realEstateDossier { padding: 11px; }
  .realEstateDossierHead { flex-direction: column; gap: 7px; }
  .realEstateDossierHead > small { align-self: flex-start; }
  .realEstateAlertGrid,
  .realEstateSources > div { grid-template-columns: 1fr; }
  .realEstateFact { flex-direction: column; gap: 5px; }
  .realEstateState { align-self: flex-start; }
  .playgroundPipeline { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .playgroundJournalHead { display: none; }
  .playgroundJournalRow {
    grid-template-columns: minmax(0, 1fr) auto;
  }
  .playgroundJournalRow span:last-child { grid-column: 1 / -1; }
  .playgroundTimeline {
    grid-template-columns: 1fr;
  }
  .playgroundTimeline > div { min-height: auto; }
  .playgroundCompactRow {
    grid-template-columns: 72px minmax(0, 1fr);
  }
  .playgroundCompactRow small { grid-column: 2; }
  .playgroundVoteBar {
    align-items: stretch;
    flex-direction: column;
  }
  .playgroundVoteButtons {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .playgroundVoteButtons button { padding: 8px 5px; }
  .playgroundActionList article { align-items: flex-start; }
  .playgroundActionList button,
  .playgroundDemoTag { align-self: center; }
}

.emptyState {
  width: 100%;
  padding: 20px;
  border: 1px dashed #cbd5e1;
  border-radius: 9px;
  color: var(--muted);
  background: var(--card-soft);
  text-align: center;
}

.footer {
  display: flex;
  justify-content: space-between;
  gap: 20px;
  padding: 17px 3px 0;
  color: var(--muted);
  font-size: 0.72rem;
}

.loadingPage,
.simplePage {
  display: grid;
  min-height: 100vh;
  place-content: center;
  padding: 30px;
  text-align: center;
}

.loadingPage {
  gap: 12px;
  color: var(--navy);
}

.loadingSpinner {
  width: 34px;
  height: 34px;
  margin: auto;
  border: 4px solid #dbeafe;
  border-top-color: var(--navy);
  border-radius: 50%;
  animation: spin 900ms linear infinite;
}

.simplePage {
  width: min(650px, calc(100% - 30px));
  min-height: auto;
  margin: 15vh auto 0;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: white;
  box-shadow: var(--shadow);
}

.simplePage h1 {
  color: var(--navy);
}

.simplePage p {
  color: var(--muted);
}

.simplePage button,
.simplePage a {
  display: inline-flex;
  justify-content: center;
  margin-top: 10px;
  padding: 10px 14px;
  border: 0;
  border-radius: 9px;
  color: white;
  background: var(--navy);
  cursor: pointer;
  text-decoration: none;
  font-weight: 750;
}

.errorIcon {
  font-size: 2.4rem;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

@media (max-width: 1050px) {
  .overviewGrid,
  .activityGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .statusCards,
  .playgroundGrid,
  .jobGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .trainingLayout {
    grid-template-columns: 1fr;
  }

  .trainingSideCard {
    max-width: 720px;
  }
}

@media (max-width: 850px) {
  .pageShell {
    width: min(100% - 22px, 1280px);
    padding-top: 11px;
  }

  .hero {
    align-items: flex-start;
    flex-direction: column;
    min-height: auto;
    padding: 21px;
  }

  .heroActions {
    width: 100%;
    justify-content: space-between;
  }

  .kpiGrid--four,
  .miniKpiGrid,
  .priorityItems,
  .recommendationGrid,
  .calendarColumns,
  .newsList {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .priorityStrip {
    grid-template-columns: 1fr;
  }

  .calendarColumns {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 620px) {
  .pageShell {
    width: 100%;
    padding: 0 0 24px;
  }

  .hero {
    border-radius: 0 0 17px 17px;
    padding: 20px 15px;
  }

  .heroActions {
    align-items: stretch;
    flex-direction: column;
  }

  .sourcePill,
  .refreshButton {
    justify-content: center;
  }

  .tabBar {
    top: 0;
    margin: 9px 8px 0;
    border-radius: 11px;
  }

  .tabPanel {
    margin: 9px 8px 0;
    padding: 14px;
    border-radius: 12px;
  }

  .kpiGrid--four,
  .miniKpiGrid,
  .priorityItems,
  .overviewGrid,
  .recommendationGrid,
  .activityGrid,
  .newsList,
  .jobGrid,
  .statusCards,
  .playgroundGrid,
  .statusIntro {
    grid-template-columns: 1fr;
  }

  .kpiGrid--four {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .kpiCard {
    min-height: 126px;
    padding: 13px;
  }

  .kpiValue {
    font-size: 1.38rem;
  }

  .panelHeader {
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
  }

  .panelMeta {
    text-align: left;
  }

  .recommendationCard {
    grid-template-columns: 80px 1fr;
  }

  .trainingRecommendation {
    grid-template-columns: 1fr;
  }

  .calendarCard,
  .birthdayCard {
    grid-template-columns: 1fr;
  }

  .calendarDate {
    width: max-content;
  }

  .footer {
    flex-direction: column;
    padding: 16px 12px 0;
  }
}


/* ==========================================================
   Dashboard v4 – kompaktere Inhaltsdarstellung
   ========================================================== */

.kpiGrid--three {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.priorityBoard {
  margin-top: 13px;
  padding: 17px;
  border: 1px solid #dbeafe;
  border-radius: 13px;
  background:
    linear-gradient(135deg, rgba(239, 246, 255, 0.96), rgba(248, 250, 252, 0.96));
}

.priorityBoardHeader,
.overviewDetailHeader {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 15px;
}

.priorityBoardHeader h2,
.overviewDetailHeader h2 {
  margin: 1px 0 0;
  color: var(--navy);
  font-size: 1rem;
}

.priorityEyebrow {
  color: #2563eb;
  font-size: 0.68rem;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.priorityHint,
.overviewDetailHeader > span {
  color: var(--muted);
  font-size: 0.7rem;
}

.priorityBoardGrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
  margin-top: 13px;
}

.priorityFocusCard {
  display: grid;
  grid-template-columns: 38px 1fr;
  gap: 10px;
  min-height: 116px;
  padding: 13px;
  border: 1px solid rgba(191, 219, 254, 0.9);
  border-radius: 11px;
  background: white;
}

.priorityFocusIcon {
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border-radius: 10px;
  background: var(--blue-soft);
  font-size: 1rem;
}

.priorityFocusCard span {
  color: #2563eb;
  font-size: 0.67rem;
  font-weight: 850;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.priorityFocusCard p {
  margin: 5px 0 0;
  font-size: 0.84rem;
  font-weight: 650;
  line-height: 1.46;
}

.overviewContentGrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 11px;
  margin-top: 13px;
}

.overviewDetailCard {
  display: flex;
  min-height: 290px;
  flex-direction: column;
  padding: 15px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--card-soft);
}

.overviewDetailCard--wide {
  grid-column: 1 / -1;
  min-height: auto;
}

.overviewDetailIcon {
  margin-right: 7px;
  font-size: 1rem;
}

.overviewDetailHeader > div {
  display: flex;
  align-items: center;
}

.overviewDetailCard > button {
  margin-top: auto;
  padding: 11px 0 0;
  border: 0;
  color: #2563eb;
  background: transparent;
  cursor: pointer;
  font-size: 0.76rem;
  font-weight: 800;
  text-align: left;
}

.claudeBriefGrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 13px;
}

.claudeBriefGrid section {
  padding: 12px;
  border: 1px solid #dbeafe;
  border-radius: 10px;
  background: white;
}

.claudeBriefGrid span {
  color: #1d4ed8;
  font-size: 0.7rem;
  font-weight: 850;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.claudeBriefGrid p {
  margin: 6px 0 0;
  font-size: 0.83rem;
  line-height: 1.5;
}

.overviewCompactList {
  display: grid;
  gap: 6px;
  margin-top: 12px;
}

.overviewCompactRow {
  display: grid;
  grid-template-columns: 92px 1fr;
  gap: 10px;
  align-items: center;
  min-height: 42px;
  padding: 7px 9px;
  border-radius: 8px;
  background: white;
}

.overviewCompactRow strong,
.overviewCompactRow span {
  display: block;
}

.overviewCompactRow strong {
  overflow: hidden;
  font-size: 0.79rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.overviewCompactRow div > span {
  margin-top: 1px;
  color: var(--muted);
  font-size: 0.68rem;
}

.compactDate {
  color: #1d4ed8;
  font-size: 0.69rem;
  font-weight: 800;
}

.compactSport {
  font-size: 1.05rem;
}

.movementColumns {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 13px;
}

.movementLabel {
  display: block;
  margin-bottom: 6px;
  font-size: 0.68rem;
  font-weight: 850;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.movementRow {
  display: flex;
  justify-content: space-between;
  gap: 9px;
  padding: 8px 9px;
  border-top: 1px solid #eef2f7;
  background: white;
  font-size: 0.76rem;
}

.movementRow:first-of-type {
  border-top: 0;
  border-radius: 8px 8px 0 0;
}

.movementRow:last-of-type {
  border-radius: 0 0 8px 8px;
}

.movementRow span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.movementEmpty {
  padding: 12px;
  border-radius: 8px;
  color: var(--muted);
  background: white;
  font-size: 0.75rem;
}

/* Finanzen: größere Schrift und weniger vertikaler Leerraum */
.financeTableWrap {
  max-width: 1120px;
  margin-top: 12px;
}

.financeTable {
  font-size: 0.86rem;
}

.financeTable th {
  padding: 8px 10px;
  font-size: 0.79rem;
}

.financeTable td {
  padding: 7px 10px;
}

.financeTable .positionCell strong {
  font-size: 0.84rem;
}

.financeTable .positionCell span,
.financeTable td > span {
  margin-top: 0;
  font-size: 0.7rem;
}

#app [data-tab-panel="finance"] .miniKpi {
  min-height: 76px;
  padding: 9px 13px;
}

#app [data-tab-panel="finance"] .miniKpi > strong {
  font-size: 1.38rem;
}

#app [data-tab-panel="finance"] .insightBox,
#app [data-tab-panel="finance"] .warningBox {
  margin: 8px 0;
  padding: 10px 13px;
}

#app [data-tab-panel="finance"] .recommendationCard {
  padding: 9px 10px;
}

/* News: eine Meldung pro Zeile */
.newsList--single {
  grid-template-columns: 1fr !important;
  max-width: 980px;
}

.newsList--single .newsRow {
  min-height: 58px;
  align-items: center;
  padding: 11px 13px;
}

/* Kalender: Datum als Gruppenüberschrift */
.calendarGroupedList {
  display: grid;
  gap: 12px;
}

.calendarDayGroup {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: white;
}

.calendarDayHeader {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 11px;
  color: #1e3a8a;
  background: var(--blue-soft);
}

.calendarDayHeader strong {
  font-size: 0.78rem;
}

.calendarDayHeader span {
  color: var(--muted);
  font-size: 0.66rem;
}

.calendarDayItems {
  display: grid;
}

.calendarGroupedItem {
  padding: 10px 12px;
  border-top: 1px solid #eef2f7;
  border-left: 4px solid #3b82f6;
}

.calendarGroupedItem:first-child {
  border-top: 0;
}

.calendarGroupedItem--gray {
  border-left-color: #94a3b8;
  background: #fafafa;
}

.calendarGroupedItem--birthday {
  border-left-color: #f59e0b;
  background: #fffbeb;
}

.calendarGroupedItem strong,
.calendarGroupedItem span {
  display: block;
}

.calendarGroupedItem strong {
  font-size: 0.85rem;
}

.calendarGroupedItem span,
.calendarGroupedItem p {
  color: var(--muted);
  font-size: 0.73rem;
}

.calendarGroupedItem p {
  margin: 3px 0 0;
}

/* Jobs: ein Datensatz pro Zeile */
.jobList {
  display: grid;
  gap: 7px;
}

.jobRow {
  display: grid;
  grid-template-columns: 145px minmax(0, 1fr) 230px;
  gap: 15px;
  align-items: center;
  min-height: 76px;
  padding: 11px 13px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--card-soft);
  text-decoration: none;
}

a.jobRow:hover {
  border-color: #93c5fd;
  background: #f8fbff;
}

.jobRowSource strong,
.jobRowSource span,
.jobRowMain span,
.jobRowSalary span {
  display: block;
}

.jobRowSource strong,
.jobRowSource span {
  color: var(--muted);
  font-size: 0.67rem;
  text-transform: uppercase;
}

.jobRowSource span {
  margin-top: 3px;
}

.jobRowMain h3 {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.35;
}

.jobRowMain span {
  margin-top: 4px;
  color: var(--muted);
  font-size: 0.72rem;
}

.jobRowSalary {
  text-align: right;
}

.jobRowSalary strong {
  color: var(--navy);
  font-size: 0.86rem;
}

.jobRowSalary span {
  margin-top: 4px;
  color: #2563eb;
  font-size: 0.68rem;
}

@media (max-width: 900px) {
  .priorityBoardGrid,
  .claudeBriefGrid {
    grid-template-columns: 1fr;
  }

  .overviewContentGrid {
    grid-template-columns: 1fr;
  }

  .overviewDetailCard--wide {
    grid-column: auto;
  }

  .jobRow {
    grid-template-columns: 115px minmax(0, 1fr);
  }

  .jobRowSalary {
    grid-column: 2;
    text-align: left;
  }
}

@media (max-width: 620px) {
  .kpiGrid--three {
    grid-template-columns: 1fr;
  }

  .priorityBoard {
    margin: 9px 8px 0;
    padding: 13px;
  }

  .priorityFocusCard {
    min-height: auto;
  }

  .movementColumns {
    grid-template-columns: 1fr;
  }

  .overviewCompactRow {
    grid-template-columns: 78px 1fr;
  }

  .activityListItem {
    grid-template-columns: 38px 1fr;
  }

  .activityMetrics {
    grid-column: 2;
    text-align: left;
  }

  .jobRow {
    grid-template-columns: 1fr;
    gap: 7px;
  }

  .jobRowSalary {
    grid-column: auto;
    text-align: left;
  }
}


/* ============================================================
   Dashboard v5 – 07:00-Vergleich und Mobile-Optimierung
   ============================================================ */

/* Der Header zeigt nur noch Aktualisierungszeit und Refresh-Aktion. */
.heroActions {
  justify-content: flex-end;
}

/* Termine im Überblick: Datum nur einmal pro Tag. */
.overviewAppointmentGroups {
  gap: 8px;
}

.overviewDateGroup {
  display: grid;
  grid-template-columns: 92px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 8px 9px;
  border-radius: 8px;
  background: white;
}

.overviewDateGroup > .compactDate {
  padding-top: 3px;
}

.overviewDateItems {
  display: grid;
}

.overviewDateItem {
  padding: 5px 0;
  border-top: 1px solid #eef2f7;
}

.overviewDateItem:first-child {
  padding-top: 0;
  border-top: 0;
}

.overviewDateItem:last-child {
  padding-bottom: 0;
}

.overviewDateItem strong,
.overviewDateItem span {
  display: block;
}

.overviewDateItem strong {
  overflow: hidden;
  font-size: 0.79rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.overviewDateItem span {
  margin-top: 1px;
  color: var(--muted);
  font-size: 0.68rem;
}

/* Aktivitätsmetriken beginnen direkt nach dem Titelblock und sind linksbündig. */
.activityListItem {
  grid-template-columns: 40px minmax(160px, 220px) minmax(0, 1fr);
}

.activityMetrics {
  text-align: left;
}

.dataTable td.isEmpty::after {
  content: "";
}

@media (max-width: 850px) {
  .heroActions {
    justify-content: flex-start;
  }

  .refreshButton {
    width: 100%;
  }

  .panelHeader {
    align-items: flex-start;
    flex-direction: column;
    gap: 5px;
  }

  .panelMeta {
    text-align: left;
  }

  /* Im mobilen Kalender stehen Geburtstage vor den Terminen. */
  .calendarColumn--birthdays {
    order: -1;
  }
}

@media (max-width: 620px) {
  .pageShell {
    width: calc(100% - 12px);
    padding-top: 6px;
  }

  .hero {
    padding: 18px 16px;
    border-radius: 14px;
  }

  .hero h1 {
    font-size: 2rem;
  }

  .tabPanel {
    margin-top: 9px;
    padding: 12px 10px;
    border-radius: 13px;
  }

  .tabBar {
    margin-top: 9px;
    padding: 5px;
  }

  .tabButton {
    min-height: 36px;
    padding: 0 10px;
  }

  .miniKpiGrid,
  .recommendationGrid,
  .statusCards,
  .playgroundGrid,
  .jobGrid,
  .newsList {
    grid-template-columns: 1fr !important;
  }

  .miniKpi {
    min-height: 72px;
  }

  .overviewDetailCard {
    min-height: auto;
    padding: 12px;
  }

  .overviewDateGroup {
    grid-template-columns: 72px minmax(0, 1fr);
    padding: 8px;
  }

  .overviewCompactRow {
    grid-template-columns: 38px minmax(0, 1fr);
  }

  .overviewCompactRow strong,
  .overviewDateItem strong {
    white-space: normal;
  }

  .calendarColumns {
    gap: 12px;
  }

  .calendarDayHeader {
    align-items: flex-start;
  }

  .calendarGroupedItem {
    padding: 9px 10px;
  }

  .activityListItem {
    grid-template-columns: 38px minmax(0, 1fr);
    gap: 8px;
  }

  .activityMetrics {
    grid-column: 2;
    padding-top: 2px;
    line-height: 1.45;
  }

  /* Tabellen werden mobil als Karten dargestellt; kein horizontales Scrollen nötig. */
  .financeTableWrap,
  .trainingTableWrap {
    overflow: visible;
    border: 0;
  }

  .financeTable,
  .trainingTable {
    display: block;
    min-width: 0;
    width: 100%;
  }

  .financeTable colgroup,
  .financeTable thead,
  .trainingTable thead {
    display: none;
  }

  .financeTable tbody,
  .trainingTable tbody,
  .trainingTable tfoot {
    display: grid;
    gap: 9px;
  }

  .financeTable tr,
  .trainingTable tr {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: white !important;
  }

  .financeTable td,
  .trainingTable td {
    display: block;
    min-width: 0;
    padding: 8px 10px;
    border-top: 1px solid #eef2f7;
    text-align: left !important;
  }

  .financeTable td::before,
  .trainingTable td::before {
    content: attr(data-label);
    display: block;
    margin-bottom: 2px;
    color: var(--muted);
    font-size: 0.65rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
  }

  .financeTable .positionCell,
  .trainingTable td:first-child {
    grid-column: 1 / -1;
    border-top: 0;
  }

  .financeTable .positionCell::before {
    content: "Position";
  }

  .trainingTable td:first-child::before {
    content: "Sport";
  }

  .financeTable td.isEmpty,
  .trainingTable td.isEmpty {
    display: none;
  }

  .trainingTable tfoot tr {
    border-width: 2px;
    background: var(--card-soft) !important;
  }

  .recommendationCard {
    grid-template-columns: 74px minmax(0, 1fr);
  }

  .statusIntro {
    grid-template-columns: 1fr;
  }
}


/* ===== Dashboard v6 additions ===== */
.sortButton{appearance:none;border:0;background:transparent;color:inherit;font:inherit;font-weight:700;display:inline-flex;align-items:center;justify-content:flex-end;gap:5px;cursor:pointer;padding:2px 0;width:100%;white-space:nowrap}.sortButton span{font-size:.9em;opacity:.65}.sortButton:hover,.sortButton:focus-visible{color:#1d4ed8}.sortButton.isSorted span{opacity:1;color:#1d4ed8}
.mobileSortBar{display:none;align-items:center;gap:7px;flex-wrap:wrap;margin:0 0 10px}.mobileSortBar>span{font-size:12px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.04em}.mobileSortButton{appearance:none;border:1px solid #dbe3ef;background:#fff;border-radius:999px;padding:7px 10px;color:#334155;font:inherit;font-size:13px;font-weight:700;cursor:pointer;display:inline-flex;gap:4px;align-items:center}.mobileSortButton.isSorted{border-color:#2563eb;background:#eff6ff;color:#1d4ed8}
.activityListItem{display:grid!important;grid-template-columns:42px minmax(190px,280px) minmax(0,1fr)!important;gap:14px!important;align-items:center!important}.activityMetrics{text-align:left!important;justify-self:start!important;margin:0!important;max-width:none!important}.activityList--overview .activityListItem{grid-template-columns:38px minmax(145px,220px) minmax(0,1fr)!important;padding:10px!important}.activityList--overview{gap:6px}
.calendarGroupedItem span{display:block}.calendarGroupedItem p{margin-top:5px}

@media(max-width:850px){.calendarColumns{display:flex!important;flex-direction:column!important}.calendarColumn--birthdays{order:-1}.activityListItem,.activityList--overview .activityListItem{grid-template-columns:38px minmax(0,1fr)!important}.activityMetrics{grid-column:2!important;margin-top:2px!important}}
@media(max-width:620px){.mobileSortBar{display:flex}.sortButton{justify-content:flex-end}.activityListItem,.activityList--overview .activityListItem{grid-template-columns:34px minmax(0,1fr)!important;gap:10px!important}.activityMetrics{font-size:13px!important;line-height:1.45}.financeTable td[data-label="Aktuell"] strong,.financeTable td[data-label="Seit Kauf"] strong{display:inline}.financeTable td[data-label="Aktuell"] span,.financeTable td[data-label="Seit Kauf"] span{display:inline;margin-left:5px}}


/* ===== Dashboard v6.1 feedback adjustments ===== */
.dataTable th,.dataTable td{font-size:15px}
.kpiDetail.positive,.miniKpi small.positive{color:#15803d;font-weight:700}
.kpiDetail.negative,.miniKpi small.negative{color:#dc2626;font-weight:700}
.heroWarning{display:inline-flex;align-items:center;padding:9px 12px;border-radius:10px;background:#fef3c7;color:#92400e;border:1px solid #f59e0b;font-weight:700;font-size:13px}
@media(max-width:760px){
  .mobileSortBar{display:none!important}
  .financeTableWrap,.trainingTableWrap{overflow-x:auto!important;border:1px solid var(--line)!important;-webkit-overflow-scrolling:touch}
  .financeTable,.trainingTable{display:table!important;width:100%!important;min-width:720px!important;border-collapse:collapse!important}
  .trainingTable{min-width:600px!important}
  .financeTable colgroup,.financeTable thead,.trainingTable thead{display:table-header-group!important}
  .financeTable tbody,.trainingTable tbody{display:table-row-group!important}
  .trainingTable tfoot{display:table-footer-group!important}
  .financeTable tr,.trainingTable tr{display:table-row!important;border:0!important;background:transparent!important}
  .financeTable td,.trainingTable td{display:table-cell!important;padding:8px 7px!important;border-top:1px solid #e5e7eb!important;text-align:right!important;font-size:13px!important;white-space:nowrap}
  .financeTable th,.trainingTable th{display:table-cell!important;padding:8px 7px!important;font-size:12px!important;white-space:nowrap}
  .financeTable td::before,.trainingTable td::before{display:none!important}
  .financeTable .positionCell,.trainingTable td:first-child{display:table-cell!important;text-align:left!important;white-space:normal!important;min-width:145px}
  .financeTable td.isEmpty,.trainingTable td.isEmpty{display:table-cell!important}
  .heroWarning{width:100%;justify-content:center}
}


/* Links tab */
.linksIntro {
  margin: -4px 0 20px;
  color: #64748b;
  font-size: 0.9rem;
  line-height: 1.5;
}

.linkGroups {
  display: grid;
  gap: 22px;
}

.linkGroup {
  min-width: 0;
}

.linkGroupTitle {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 10px;
}

.linkGroupTitle h2 {
  margin: 0;
  color: #0f172a;
  font-size: 1rem;
}

.linkGrid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.linkCard {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  align-items: center;
  gap: 11px;
  min-height: 86px;
  padding: 14px;
  border: 1px solid #dbe4ef;
  border-radius: 12px;
  color: inherit;
  background: #f8fafc;
  text-decoration: none;
  transition: transform 140ms ease, border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
}

.linkCard:hover {
  transform: translateY(-1px);
  border-color: #93b4dc;
  background: #fff;
  box-shadow: 0 8px 22px rgba(15, 23, 42, 0.08);
}

.linkCardIcon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 10px;
  background: #eaf2ff;
  font-size: 1.25rem;
}

.linkCardBody {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.linkCardBody strong {
  color: #0f172a;
  font-size: 0.92rem;
}

.linkCardBody small {
  color: #64748b;
  font-size: 0.76rem;
  line-height: 1.35;
}

.linkCardArrow {
  color: #2563eb;
  font-size: 1rem;
  font-weight: 800;
}

@media (max-width: 900px) {
  .linkGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 580px) {
  .linkGrid { grid-template-columns: 1fr; }
  .linkCard { min-height: 76px; padding: 12px; }
  .linksIntro { font-size: 0.82rem; }
}


/* Login und Benutzersteuerung v6.3 */
.loginBody { margin:0; min-height:100vh; background:radial-gradient(circle at top left,#dbeafe 0,transparent 38%),linear-gradient(135deg,#eef4fb,#dfe8f3); color:#0f172a; font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
.loginPage { min-height:100vh; display:grid; place-items:center; padding:24px; }
.loginCard { width:min(440px,100%); padding:32px; border:1px solid rgba(255,255,255,.75); border-radius:24px; background:rgba(255,255,255,.92); box-shadow:0 28px 70px rgba(23,52,109,.18); backdrop-filter:blur(16px); }
.loginBrand { display:flex; align-items:center; gap:14px; }
.loginBrandIcon { display:grid; width:52px; height:52px; place-items:center; border-radius:15px; color:white; background:linear-gradient(145deg,#17346d,#2f61ac); font-size:1.6rem; font-weight:900; }
.loginBrand span { color:#64748b; font-size:.72rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.loginBrand h1 { margin:3px 0 0; font-size:1.8rem; }
.loginIntro { margin:24px 0 20px; color:#526176; line-height:1.55; }
.loginError { margin-bottom:16px; padding:11px 13px; border:1px solid #fecaca; border-radius:10px; color:#991b1b; background:#fef2f2; font-size:.9rem; }
.loginForm { display:grid; gap:16px; }
.loginForm label { display:grid; gap:7px; color:#334155; font-size:.84rem; font-weight:750; }
.loginForm input { width:100%; box-sizing:border-box; padding:13px 14px; border:1px solid #cbd5e1; border-radius:11px; background:white; font:inherit; outline:none; }
.loginForm input:focus { border-color:#376eb8; box-shadow:0 0 0 4px rgba(55,110,184,.13); }
.loginForm button { margin-top:3px; padding:13px 16px; border:0; border-radius:11px; color:white; background:linear-gradient(135deg,#17346d,#2c5da5); font-weight:850; font-size:1rem; cursor:pointer; }
.loginSecurity { margin-top:19px; color:#7b8798; font-size:.76rem; text-align:center; }
.userBadge { display:flex; align-items:center; gap:6px; padding:9px 11px; border:1px solid rgba(255,255,255,.25); border-radius:10px; color:white; background:rgba(255,255,255,.1); font-size:.84rem; }
.heroActions form { margin:0; }
.logoutButton { padding:10px 13px; border:1px solid rgba(255,255,255,.32); border-radius:10px; color:white; background:transparent; font-weight:750; cursor:pointer; }
.logoutButton:hover { background:rgba(255,255,255,.12); }
@media (max-width:650px) { .loginCard{padding:24px 20px;border-radius:18px}.heroActions{align-items:stretch}.userBadge{justify-content:center}.logoutButton{width:100%} }



/* ============================================================
   Dashboard v6.7 – clean responsive layout
   ============================================================ */
body { font-size: 17px; }

/* Desktop header */
.hero { flex-direction: column; align-items: stretch; }
.heroMain { display:flex; align-items:center; justify-content:space-between; gap:24px; width:100%; }
.heroStatusRow { display:flex; justify-content:flex-end; width:100%; }
.heroWarning--row,.heroStatusOk { display:inline-flex; align-items:center; min-height:30px; padding:4px 10px; border-radius:8px; font-size:.78rem; }
.heroStatusOk { color:#dcfce7; background:rgba(21,128,61,.28); }
.iconButton { width:42px; height:42px; min-height:42px; padding:0; display:inline-flex; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,.24); border-radius:10px; color:#fff; background:rgba(255,255,255,.1); cursor:pointer; font-size:1.25rem; font-weight:800; }
.iconButton:hover { background:rgba(255,255,255,.2); }
.iconButton.isLoading span,.mobileHeaderButton.isLoading span { display:inline-block; animation:dashboardSpin .8s linear infinite; }
@keyframes dashboardSpin { to { transform:rotate(360deg); } }

/* v6.4 content refinements retained */
.kpiTop { justify-content:flex-start; align-items:center; }
.kpiValue { margin-top:14px; }
.movementColumns--single { grid-template-columns:1fr; }
.mapLink { color:var(--navy-light); text-decoration:none; font-weight:650; }
.mapLink:hover { text-decoration:underline; }
.linkCardBody small,.linksIntro { display:none !important; }
.linkCard { min-height:70px; }
.linkCardIcon { font-size:1.35rem; }
.dataTable { font-size:.94rem; }
.panelHeader,.miniKpi,.kpiCard,.overviewDetailCard,.linkCard { font-size:1rem; }

/* Dedicated mobile components are hidden on desktop. */
.mobileHeader,.mobileDataTable { display:none; }

@media (max-width: 700px) {
  html,body { max-width:100%; overflow-x:hidden; }
  body { font-size:15px; background:var(--background); }
  .pageShell { width:100%; margin:0; padding:10px 10px 26px; }

  /* A compact app header, independent of the desktop hero. */
  .desktopHeader { display:none !important; }
  .mobileHeader {
    display:block;
    padding:13px 14px 11px;
    border:1px solid rgba(255,255,255,.22);
    border-radius:16px;
    color:#fff;
    background:linear-gradient(135deg,#17346d 0%,#2857a6 100%);
    box-shadow:0 12px 28px rgba(23,52,109,.18);
  }
  .mobileHeaderTop { display:flex; align-items:center; justify-content:space-between; gap:12px; min-width:0; }
  .mobileBrand { min-width:0; display:flex; flex-direction:column; }
  .mobileBrand strong { overflow:hidden; color:#fff; font-size:1.22rem; line-height:1.16; letter-spacing:-.025em; text-overflow:ellipsis; white-space:nowrap; }
  .mobileBrand span { margin-top:3px; color:#dbeafe; font-size:.73rem; line-height:1.2; }
  .mobileHeaderActions { display:flex; align-items:center; gap:6px; flex:0 0 auto; }
  .mobileHeaderActions form { margin:0; display:flex; }
  .mobileUserChip { display:inline-flex; align-items:center; height:32px; max-width:66px; padding:0 9px; overflow:hidden; border:1px solid rgba(255,255,255,.22); border-radius:9px; color:#eff6ff; background:rgba(255,255,255,.1); font-size:.72rem; font-weight:750; text-overflow:ellipsis; white-space:nowrap; }
  .mobileHeaderButton { display:inline-grid; width:32px; height:32px; place-items:center; padding:0; border:1px solid rgba(255,255,255,.26); border-radius:9px; color:#fff; background:rgba(255,255,255,.1); font-size:1rem; font-weight:850; cursor:pointer; }
  .mobileHeaderButton:disabled { opacity:.7; }
  .mobileHeaderStatus { display:flex; justify-content:flex-end; margin-top:9px; padding-top:8px; border-top:1px solid rgba(255,255,255,.13); }
  .mobileWarning,.mobileStatusOk { display:inline-flex; align-items:center; min-height:24px; padding:3px 8px; border-radius:7px; font-size:.69rem; font-weight:760; line-height:1.2; }
  .mobileWarning { border:1px solid #fbbf24; color:#7c2d12; background:#fef3c7; }
  .mobileStatusOk { color:#dcfce7; background:rgba(21,128,61,.3); }

  /* Navigation stays horizontally scrollable, but never distorts the page. */
  .tabBar {
    top:8px;
    width:100%;
    margin-top:8px;
    padding:5px;
    gap:3px;
    overflow-x:auto;
    border-radius:13px;
    scrollbar-width:none;
  }
  .tabBar::-webkit-scrollbar { display:none; }
  .tabButton { min-height:36px; padding:0 10px; border-radius:9px; font-size:.8rem; }
  .tabButton small { min-width:20px; height:20px; font-size:.64rem; }

  .tabPanel { margin-top:8px; padding:12px; border-radius:16px; }
  .panelHeader { gap:10px; margin-bottom:12px; padding-bottom:10px; }
  .panelTitle { gap:7px; min-width:0; }
  .panelTitle > span { font-size:1.05rem; }
  .panelTitle h2 { font-size:1.3rem; line-height:1.18; }
  .panelMeta { display:none; }

  /* Compact 2 x 2 summary grid instead of four tall stacked cards. */
  .miniKpiGrid,.kpiGrid,.kpiGrid--three,.kpiGrid--four {
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
    gap:8px !important;
  }
  .miniKpi,.kpiCard {
    min-height:88px !important;
    padding:11px 12px !important;
    border-radius:12px !important;
  }
  .miniKpi > span,.kpiTop { font-size:.72rem !important; }
  .miniKpi > strong { margin-top:4px; font-size:1.16rem !important; line-height:1.18; overflow-wrap:anywhere; }
  .miniKpi > small,.kpiDetail { font-size:.68rem !important; line-height:1.25; }
  .kpiValue { margin-top:8px !important; font-size:1.22rem !important; line-height:1.18; overflow-wrap:anywhere; }

  /* Only the dedicated mobile tables are shown below 700 px. */
  .desktopDataTable,.mobileSortBar { display:none !important; }
  .mobileDataTable { display:block; width:100%; margin-top:14px; overflow:hidden; border:1px solid #dbe4ef; border-radius:12px; background:#fff; }
  .mobileEmailTable { width:100%; border-collapse:collapse; table-layout:fixed; font-variant-numeric:tabular-nums; }
  .mobileEmailTable th {
    padding:8px 3px;
    border:0;
    color:#475569;
    background:#eef3f8;
    font-size:.62rem;
    font-weight:850;
    line-height:1.08;
    text-align:right;
    vertical-align:bottom;
    white-space:normal;
  }
  .mobileEmailTable th:first-child { padding-left:8px; text-align:left; }
  .mobileEmailTable td {
    padding:8px 3px;
    border-top:1px solid #e5eaf0;
    color:#172033;
    font-size:.7rem;
    line-height:1.16;
    text-align:right;
    vertical-align:middle;
    white-space:nowrap;
  }
  .mobileEmailTable td:first-child { padding-left:8px; text-align:left; white-space:normal; }
  .mobileEmailTable td:last-child,.mobileEmailTable th:last-child { padding-right:7px; }
  .mobileEmailTable tbody tr:nth-child(even) { background:#fbfcfe; }
  .mobileEmailTable td strong { display:block; font-size:.73rem; font-weight:820; line-height:1.14; white-space:nowrap; }
  .mobileEmailTable td span { display:block; margin-top:2px; color:#8391a7; font-size:.59rem; line-height:1.08; white-space:nowrap; }
  .mobileEmailTable tfoot td { border-top:2px solid #cfd8e5; background:#f3f6fa; font-weight:820; }

  /* Mobile Depot: nur Position, aktuelle Veränderung und Gesamtperformance. */
  .mobileFinancePosition { width:46%; }
  .mobileFinanceCurrent,.mobileFinanceTotal { width:27%; }
  .mobileFinanceTable th {
    padding:9px 7px;
    font-size:.7rem;
  }
  .mobileFinanceTable td {
    padding:10px 7px;
    font-size:.76rem;
  }
  .mobileFinanceTable th:first-child,
  .mobileFinanceTable td:first-child {
    padding-left:11px;
  }
  .mobileFinanceTable th:last-child,
  .mobileFinanceTable td:last-child {
    padding-right:10px;
  }
  .mobileFinanceTable .mobilePositionCell strong {
    display:-webkit-box;
    overflow:hidden;
    font-size:.78rem;
    line-height:1.18;
    white-space:normal;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:2;
  }
  .mobileFinanceTable .mobilePositionCell span { display:none; }
  .mobileFinanceTable td.positive strong,
  .mobileFinanceTable td.negative strong {
    font-size:.82rem;
    line-height:1.12;
  }
  .mobileFinanceTable td.positive span,
  .mobileFinanceTable td.negative span {
    margin-top:3px;
    font-size:.68rem;
  }

  .trainingRecommendation { grid-template-columns:1fr; gap:4px; padding:10px 12px; }
  .recommendationGrid,.newsList { grid-template-columns:1fr; }
  .activityListItem,.activityList--overview .activityListItem { padding:10px !important; }
  .activityMetrics { font-size:.75rem !important; line-height:1.4; overflow-wrap:anywhere; }
  .footer { display:none; }
}

@media (max-width: 370px) {
  .pageShell { padding-right:7px; padding-left:7px; }
  .mobileHeader { padding-right:11px; padding-left:11px; }
  .mobileBrand strong { font-size:1.12rem; }
  .mobileUserChip { display:none; }
  .tabPanel { padding:9px; }
  .mobileEmailTable th { padding-right:2px; padding-left:2px; font-size:.57rem; }
  .mobileEmailTable td { padding-right:2px; padding-left:2px; font-size:.66rem; }
  .mobileEmailTable th:first-child,.mobileEmailTable td:first-child { padding-left:6px; }
  .mobileEmailTable td strong { font-size:.68rem; }
  .mobileEmailTable td span { font-size:.54rem; }
  .mobileFinancePosition { width:44%; }
  .mobileFinanceCurrent,.mobileFinanceTotal { width:28%; }
}


/* Profits v6.9 */
.profitKpiGrid .miniKpiValue {
  font-variant-numeric: tabular-nums;
}

.profitsYearlyTable,
.profitsDetailTable {
  min-width: 0;
}

.profitsYearlyTable td,
.profitsYearlyTable th,
.profitsDetailTable td,
.profitsDetailTable th {
  font-variant-numeric: tabular-nums;
}

.profitsYearlyTable tfoot td {
  background: #f1f5f9;
  border-top: 2px solid #cbd5e1;
}

.profitDetailHeader {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}

.profitDetailHeader h3 {
  margin: 0;
}

.profitFilters {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.profitFilter {
  border: 1px solid #cbd5e1;
  background: #fff;
  color: #475569;
  border-radius: 999px;
  padding: 6px 11px;
  font: inherit;
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
}

.profitFilter.isActive {
  border-color: #1e3a8a;
  background: #1e3a8a;
  color: #fff;
}

.profitTypeBadge {
  display: inline-flex;
  align-items: center;
  border-radius: 999px;
  padding: 4px 8px;
  font-size: 12px;
  font-weight: 800;
  white-space: nowrap;
}

.profitTypeBadge--sale {
  background: #eff6ff;
  color: #1d4ed8;
}

.profitTypeBadge--dividend {
  background: #f0fdf4;
  color: #15803d;
}

.profitTypeBadge--other {
  background: #fff7ed;
  color: #c2410c;
}

.profitFootnote {
  margin: 10px 2px 0;
  color: #64748b;
  font-size: 12px;
  line-height: 1.45;
}

.profitFootnote code {
  font-size: 0.92em;
}

.profitReferenceDetails {
  margin-top: 7px;
  border-top: 1px solid #e2e8f0;
  padding-top: 6px;
}

.profitReferenceDetails summary {
  cursor: pointer;
  color: #334155;
  font-weight: 750;
}

.profitReferenceDetails div {
  margin-top: 6px;
}

.profitReferenceDetails ul {
  margin: 6px 0 0 18px;
  padding: 0;
}

.profitReferenceDetails li + li {
  margin-top: 2px;
}


.profitWarningText {
  color: #b45309;
  font-size: 12px;
  margin-top: 3px;
}

.profitWarnings ul {
  margin: 8px 0 0 18px;
  padding: 0;
}

@media (max-width: 700px) {
  .profitDetailHeader {
    align-items: flex-start;
    flex-direction: column;
  }

  .profitsYearlyWrap,
  .profitsDetailWrap {
    overflow: visible;
  }

  .profitsYearlyTable,
  .profitsDetailTable {
    width: 100%;
    table-layout: fixed;
    font-size: 12px;
  }

  .profitsYearlyTable th,
  .profitsYearlyTable td {
    padding: 9px 5px;
  }

  .profitsYearlyTable th:first-child,
  .profitsYearlyTable td:first-child {
    width: 13%;
  }

  .profitsYearlyTable th:nth-child(2),
  .profitsYearlyTable td:nth-child(2) {
    width: 20%;
  }

  .profitsYearlyTable th:nth-child(3),
  .profitsYearlyTable td:nth-child(3) {
    width: 23%;
  }

  .profitsYearlyTable th:nth-child(4),
  .profitsYearlyTable td:nth-child(4) {
    width: 21%;
  }

  .profitsYearlyTable th:nth-child(5),
  .profitsYearlyTable td:nth-child(5) {
    width: 23%;
  }

  .profitsYearlyTable th {
    white-space: normal;
    line-height: 1.15;
  }

  .profitsDetailTable th,
  .profitsDetailTable td {
    padding: 10px 6px;
  }

  .profitsDetailTable th:first-child,
  .profitsDetailTable td:first-child {
    width: 22%;
  }

  .profitsDetailTable th:nth-child(2),
  .profitsDetailTable td:nth-child(2) {
    width: 21%;
  }

  .profitsDetailTable th:nth-child(3),
  .profitsDetailTable td:nth-child(3) {
    width: 37%;
  }

  .profitsDetailTable th:nth-child(4),
  .profitsDetailTable td:nth-child(4) {
    width: 20%;
  }

  .profitsDetailTable strong {
    overflow-wrap: anywhere;
  }

  .profitTypeBadge {
    padding: 3px 5px;
    font-size: 10px;
  }

  .profitDate {
    white-space: normal;
  }
}


/* Profits v6.10 – sortable tables and refined details */
.profitSection {
  margin-top: 24px;
}

.profitSectionHeader {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
}

.profitSectionHeader h3 {
  margin: 0;
}

.profitSectionHeader > span,
.profitDetailCount {
  color: #8391a7;
  font-size: 12px;
  font-weight: 600;
}

.profitsYearlyWrap,
.profitsDetailWrap {
  margin-top: 0;
  overflow: hidden;
  border-color: #d9e2ef;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(15, 23, 42, .035);
}

.profitsYearlyTable .sortButton,
.profitsDetailTable .sortButton {
  min-height: 28px;
}

.profitsYearlyTable th:first-child .sortButton,
.profitsDetailTable th:not(.alignRight) .sortButton {
  justify-content: flex-start;
}

.profitsYearlyTable tbody tr,
.profitsDetailTable tbody tr {
  transition: background-color .15s ease;
}

.profitsYearlyTable tbody tr:hover,
.profitsDetailTable tbody tr:hover {
  background: #f4f8ff;
}

.profitsYearlyTable tfoot td {
  background: #edf3f9;
}

.profitDetailSection {
  padding-top: 2px;
}

.profitDetailHeader {
  padding: 0 2px;
}

.profitDetailHeader > div:first-child {
  display: grid;
  gap: 3px;
}

.profitFilters {
  padding: 4px;
  border: 1px solid #dbe4ef;
  border-radius: 999px;
  background: #f5f8fc;
}

.profitFilter {
  border-color: transparent;
  background: transparent;
  padding: 7px 14px;
  transition: background-color .15s ease, color .15s ease, box-shadow .15s ease;
}

.profitFilter:hover {
  color: #1e3a8a;
  background: #fff;
}

.profitFilter.isActive {
  border-color: transparent;
  background: #1e3a8a;
  box-shadow: 0 3px 10px rgba(30, 58, 138, .18);
}

.profitsDetailTable {
  table-layout: fixed;
}

.profitColDate { width: 126px; }
.profitColType { width: 126px; }
.profitColPosition { width: auto; }
.profitColResult { width: 150px; }

.profitsDetailTable th,
.profitsDetailTable td {
  padding: 13px 14px;
}

.profitsDetailTable td {
  vertical-align: middle;
}

.profitsDetailTable td > .profitTypeBadge {
  display: inline-flex;
  width: auto;
  margin: 0;
  gap: 6px;
  padding: 6px 10px;
  border: 1px solid transparent;
  font-size: 12px;
  line-height: 1;
  box-shadow: none;
}

.profitsDetailTable td > .profitTypeBadge > span {
  display: inline;
  margin: 0;
  color: inherit;
  font-size: 11px;
}

.profitTypeBadge--sale {
  border-color: #dbeafe !important;
  background: #eff6ff;
  color: #1d4ed8;
}

.profitTypeBadge--dividend {
  border-color: #dcfce7 !important;
  background: #f0fdf4;
  color: #15803d;
}

.profitTypeBadge--other {
  border-color: #fed7aa !important;
  background: #fff7ed;
  color: #c2410c;
}

.profitDate {
  color: #334155;
  font-weight: 650;
  white-space: nowrap;
}

.profitPositionCell > strong {
  display: block;
  color: #172033;
  font-size: 15px;
  line-height: 1.3;
}

.profitPositionMeta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 4px;
}

.profitPositionMeta > span {
  display: inline-flex !important;
  width: auto !important;
  margin: 0 !important;
  color: #8391a7 !important;
  font-size: 12px !important;
}

.profitPositionMeta > span:first-child {
  padding: 2px 6px;
  border-radius: 5px;
  background: #f1f5f9;
  color: #64748b !important;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
}

.profitResultCell strong {
  font-size: 16px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.profitPositionSort {
  justify-content: flex-start !important;
}

@media (max-width: 700px) {
  .profitSectionHeader {
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
  }

  .profitDetailHeader {
    gap: 12px;
  }

  .profitFilters {
    width: 100%;
    justify-content: space-between;
  }

  .profitFilter {
    flex: 1;
    justify-content: center;
    padding: 7px 8px;
  }

  .profitsYearlyWrap,
  .profitsDetailWrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .profitsYearlyTable {
    min-width: 610px;
    table-layout: auto;
  }

  .profitsDetailTable {
    min-width: 620px;
    table-layout: fixed;
  }

  .profitsDetailTable th,
  .profitsDetailTable td {
    padding: 11px 10px;
  }

  .profitColDate { width: 104px; }
  .profitColType { width: 108px; }
  .profitColPosition { width: auto; }
  .profitColResult { width: 118px; }

  .profitsDetailTable td > .profitTypeBadge {
    padding: 5px 8px;
    font-size: 11px;
  }

  .profitPositionCell > strong {
    font-size: 13px;
  }

  .profitResultCell strong {
    font-size: 14px;
  }
}


/* Profits v6.11 */
.profitSection:first-of-type {
  margin-top: 8px;
}

.profitSectionHeader {
  margin-bottom: 8px;
}

.profitDetailHeader {
  align-items: center;
}

.profitDetailHeader > div:first-child {
  display: block;
}

.profitColDate { width: 112px; }
.profitColType { width: 116px; }
.profitColPosition { width: auto; }
.profitColEntry { width: 132px; }
.profitColResult { width: 130px; }
.profitColReturn { width: 118px; }

.profitEntryCell,
.profitReturnCell {
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.profitReturnCell strong {
  font-size: 15px;
}

@media (max-width: 700px) {
  .profitsDetailTable {
    min-width: 850px;
  }

  .profitColDate { width: 98px; }
  .profitColType { width: 102px; }
  .profitColPosition { width: 245px; }
  .profitColEntry { width: 118px; }
  .profitColResult { width: 116px; }
  .profitColReturn { width: 110px; }
}


/* Home Assistant v6.12 */
.homeAssistantTabPanel {
  padding-bottom: 0;
}

.homeAssistantPanel {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.homeAssistantToolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 14px 16px;
  border: 1px solid #dbe3ef;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(15, 23, 42, .05);
}

.homeAssistantTitle {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
}

.homeAssistantIcon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  flex: 0 0 auto;
  border-radius: 12px;
  background: #e8f7ff;
  font-size: 22px;
}

.homeAssistantTitle h2 {
  margin: 0;
  color: #172033;
  font-size: 18px;
}

.homeAssistantTitle p {
  margin: 3px 0 0;
  color: #64748b;
  font-size: 13px;
}

.homeAssistantActions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
}

.homeAssistantReload,
.primaryLinkButton {
  display: inline-flex;
  min-height: 38px;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  padding: 8px 13px;
  font: inherit;
  font-size: 13px;
  font-weight: 750;
  text-decoration: none;
  cursor: pointer;
}

.homeAssistantReload {
  border: 1px solid #cbd5e1;
  background: #fff;
  color: #334155;
}

.homeAssistantReload:hover {
  border-color: #94a3b8;
  background: #f8fafc;
}

.primaryLinkButton {
  border: 1px solid #1e3a8a;
  background: #1e3a8a;
  color: #fff;
}

.primaryLinkButton:hover {
  background: #24479f;
}

.homeAssistantFrameShell {
  position: relative;
  overflow: hidden;
  height: calc(100dvh - 245px);
  min-height: 680px;
  border: 1px solid #dbe3ef;
  border-radius: 16px;
  background: #f8fafc;
  box-shadow: 0 10px 30px rgba(15, 23, 42, .06);
}

.homeAssistantFrame {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
  background: #fff;
}

.homeAssistantFrameLoading {
  position: absolute;
  z-index: 2;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  background: #f8fafc;
  color: #475569;
  transition: opacity .2s ease, visibility .2s ease;
}

.homeAssistantFrameLoading.isHidden {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.homeAssistantHint {
  margin: 0 4px 4px;
  color: #64748b;
  font-size: 12px;
}

@media (max-width: 700px) {
  .homeAssistantToolbar {
    align-items: flex-start;
    flex-direction: column;
    padding: 12px;
  }

  .homeAssistantActions {
    width: 100%;
  }

  .homeAssistantReload,
  .primaryLinkButton {
    flex: 1;
  }

  .homeAssistantFrameShell {
    height: calc(100dvh - 235px);
    min-height: 600px;
    border-radius: 12px;
  }

  .homeAssistantHint {
    padding-bottom: env(safe-area-inset-bottom);
  }
}


/* Dashboard v6.13 */
.sourceWarningBox {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0 0 14px;
  border: 1px solid #f5c76b;
  border-radius: 12px;
  background: #fff8e8;
  padding: 11px 13px;
  color: #854d0e;
}

.sourceWarningBox strong {
  white-space: nowrap;
}

.sourceWarningBox span {
  overflow-wrap: anywhere;
}

.statusRefreshPanel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  margin: 0 0 18px;
  border: 1px solid #c7d7ff;
  border-radius: 16px;
  background: linear-gradient(135deg, #f8fbff, #eef4ff);
  padding: 16px 18px;
  box-shadow: 0 8px 24px rgba(30, 58, 138, .07);
}

.statusRefreshPanel > div:first-child {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

.statusRefreshPanel strong {
  color: #172554;
  font-size: 15px;
}

.statusRefreshPanel p {
  max-width: 720px;
  margin: 4px 0 0;
  color: #64748b;
  font-size: 13px;
  line-height: 1.45;
}

.statusRefreshIcon {
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  flex: 0 0 auto;
  border-radius: 12px;
  background: #dbeafe;
  font-size: 20px;
}

.statusRefreshActions {
  display: flex;
  gap: 8px;
  flex: 0 0 auto;
}

.fullRefreshButton {
  display: inline-flex;
  min-height: 40px;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 1px solid #1e3a8a;
  border-radius: 10px;
  background: #1e3a8a;
  padding: 8px 14px;
  color: #fff;
  font: inherit;
  font-size: 13px;
  font-weight: 800;
  cursor: pointer;
}

.fullRefreshButton:hover {
  background: #2749a1;
}

.fullRefreshButton:disabled {
  cursor: wait;
  opacity: .7;
}

.profitColEntry { width: 135px; }
.profitColSale { width: 135px; }
.profitColResult { width: 125px; }
.profitColReturn { width: 112px; }

.profitSaleCell {
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

@media (max-width: 700px) {
  .statusRefreshPanel {
    align-items: stretch;
    flex-direction: column;
    padding: 14px;
  }

  .statusRefreshActions {
    width: 100%;
  }

  .statusRefreshActions > * {
    flex: 1;
  }

  .sourceWarningBox {
    flex-direction: column;
  }

  .profitsDetailTable {
    min-width: 980px;
  }

  .profitColEntry { width: 125px; }
  .profitColSale { width: 125px; }
}


/* Dashboard v6.14: Benutzermenü & Dokumentation */
.userMenu { position: relative; }
.userMenuTrigger { appearance: none; cursor: pointer; font: inherit; }
.userMenuTrigger.userBadge { display:flex; align-items:center; gap:7px; }
.userMenuTrigger strong { max-width:145px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.userMenuChevron { margin-left:2px; font-size:.8rem; transition:transform .16s ease; }
.userMenuTrigger[aria-expanded="true"] .userMenuChevron { transform:rotate(180deg); }
.userMenuPanel {
  position:absolute;
  z-index:100;
  top:calc(100% + 9px);
  right:0;
  width:244px;
  overflow:hidden;
  border:1px solid #d9e2ef;
  border-radius:14px;
  background:#fff;
  padding:7px;
  color:#172033;
  box-shadow:0 18px 48px rgba(15,23,42,.22);
}
.userMenuPanel[hidden] { display:none !important; }
.userMenuPanel button,
.userMenuPanel form button {
  display:flex;
  width:100%;
  min-height:42px;
  align-items:center;
  gap:10px;
  border:0;
  border-radius:9px;
  background:transparent;
  padding:9px 10px;
  color:#26354d;
  font:inherit;
  font-size:.88rem;
  font-weight:700;
  text-align:left;
  cursor:pointer;
}
.userMenuPanel button:hover { background:#f1f5fb; }
.userMenuPanel button > span:first-child { display:grid; width:22px; place-items:center; font-size:1rem; }
.userMenuPanel form { margin:0; }
.userMenuIdentity { display:flex; flex-direction:column; gap:2px; padding:8px 10px; }
.userMenuIdentity span { color:#64748b; font-size:.72rem; }
.userMenuIdentity strong { color:#172554; font-size:.9rem; }
.userMenuDivider { height:1px; margin:5px 4px; background:#e6edf5; }
.userMenuPanel .userMenuLogout { color:#a12626; }
.userMenuPanel .userMenuLogout:hover { background:#fff1f1; }

.documentationShell { overflow:hidden; border:1px solid #dbe3ef; border-radius:17px; background:#fff; box-shadow:0 9px 28px rgba(15,23,42,.06); }
.documentationToolbar { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:17px 20px; border-bottom:1px solid #e6edf5; background:linear-gradient(135deg,#f8fbff,#eef4ff); }
.documentationToolbar h2 { margin:2px 0 0; color:#172554; font-size:1.25rem; }
.documentationEyebrow { color:#42629b; font-size:.72rem; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.documentationDownload { display:inline-flex; min-height:39px; align-items:center; border:1px solid #c6d4e7; border-radius:10px; background:#fff; padding:8px 12px; color:#1e3a8a; font-size:.82rem; font-weight:800; text-decoration:none; }
.documentationDownload:hover { background:#f7faff; }
.documentationContent { max-width:1180px; margin:0 auto; padding:24px 28px 38px; color:#26354d; line-height:1.62; }
.documentationLoading { display:flex; min-height:260px; align-items:center; justify-content:center; gap:12px; color:#64748b; }
.documentationContent h2 { margin:30px 0 12px; padding-top:5px; color:#172554; font-size:1.55rem; line-height:1.25; }
.documentationContent h3 { margin:26px 0 10px; color:#1e3a5f; font-size:1.22rem; }
.documentationContent h4 { margin:22px 0 9px; color:#334155; font-size:1.02rem; }
.documentationContent p { margin:9px 0 13px; }
.documentationContent a { color:#1d4ed8; overflow-wrap:anywhere; }
.documentationContent code { border:1px solid #e1e8f0; border-radius:6px; background:#f5f7fa; padding:1px 5px; color:#334155; font:600 .86em ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; }
.documentationContent pre { overflow:auto; margin:14px 0 20px; border-radius:13px; background:#172033; padding:16px 18px; color:#e8edf6; }
.documentationContent pre code { border:0; background:transparent; padding:0; color:inherit; font-weight:500; white-space:pre; }
.documentationContent blockquote { margin:13px 0 18px; border-left:4px solid #7da2d8; border-radius:0 10px 10px 0; background:#f3f7fd; padding:11px 14px; color:#43546d; }
.documentationContent ul,.documentationContent ol { margin:9px 0 18px; padding-left:24px; }
.documentationContent li { margin:4px 0; }
.documentationFigure { margin:16px 0 26px; }
.documentationFigure img { display:block; width:100%; height:auto; border:1px solid #d7e1ed; border-radius:16px; background:#f7faff; }
.documentationFigure figcaption { margin-top:7px; color:#64748b; font-size:.76rem; text-align:center; }
.documentationTableWrap { overflow-x:auto; margin:12px 0 22px; border:1px solid #dbe3ef; border-radius:12px; }
.documentationTableWrap table { width:100%; min-width:640px; border-collapse:collapse; font-size:.84rem; }
.documentationTableWrap th { background:#f3f7fc; color:#243553; font-weight:850; text-align:left; }
.documentationTableWrap th,.documentationTableWrap td { border-bottom:1px solid #e5ebf2; padding:9px 11px; vertical-align:top; }
.documentationTableWrap tr:last-child td { border-bottom:0; }
.documentationContent hr { height:1px; border:0; background:#dbe3ef; margin:28px 0; }

@media (max-width: 700px) {
  .userMenu--mobile .userMenuPanel { position:fixed; top:65px; right:11px; width:min(280px,calc(100vw - 22px)); }
  .mobileUserChip.userMenuTrigger { display:inline-flex !important; max-width:122px; gap:5px; }
  .mobileUserChip.userMenuTrigger strong { max-width:72px; }
  .documentationToolbar { align-items:flex-start; flex-direction:column; padding:14px; }
  .documentationDownload { width:100%; justify-content:center; }
  .documentationContent { padding:18px 14px 28px; }
  .documentationContent h2 { font-size:1.34rem; }
  .documentationTableWrap { margin-right:-4px; margin-left:-4px; }
}



.financeResearchLayout {
  display: grid;
  grid-template-columns: minmax(0, 1.65fr) minmax(310px, .85fr);
  gap: 14px;
  margin-top: 18px;
  align-items: start;
}






.financeSectionHeader {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 12px;
}

.financeSectionHeader h3 {
  margin: 2px 0 3px;
  color: var(--text);
  font-size: 1rem;
  letter-spacing: 0;
  text-transform: none;
}

.financeSectionHeader p {
  max-width: 690px;
  margin: 0;
  color: var(--muted);
  font-size: .75rem;
  line-height: 1.4;
}

.financeSectionHeader--compact { margin-bottom: 10px; }
.financeSectionEyebrow {
  color: #1d4ed8;
  font-size: .65rem;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.financeDataStamp {
  flex: 0 0 auto;
  max-width: 210px;
  color: var(--muted);
  font-size: .66rem;
  text-align: right;
}














.tickerBadge {
  display: inline-flex;
  min-width: 52px;
  min-height: 30px;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: #172554;
  padding: 5px 8px;
  color: #fff;
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .04em;
}

.confidencePill {
  flex: 0 0 auto;
  border-radius: 999px;
  padding: 4px 7px;
  font-size: .61rem;
  font-weight: 800;
}
.confidencePill--hoch { color: #166534; background: #dcfce7; }
.confidencePill--mittel { color: #92400e; background: #fef3c7; }
.confidencePill--niedrig { color: #991b1b; background: #fee2e2; }










































@media (max-width: 1100px) {
  .financeResearchLayout { grid-template-columns: 1fr; }
  
}

@media (max-width: 760px) {
  
  .financeSectionHeader { flex-direction: column; }
  .financeDataStamp { max-width: none; text-align: left; }
  
  
  
  
  
}


/* Dashboard v6.16: Refresh-Aktionen im Benutzermenü */
.userMenuPanel .userMenuSubAction {
  padding-left: 22px;
  color: #1e3a8a;
  font-size: .84rem;
}
.userMenuPanel .userMenuSubAction > span:first-child {
  color: #3159ad;
}



.confidencePill--fallback {
  background: #fff3cd;
  color: #7a4b00;
  border-color: #f2cc67;
}


/* Dashboard v6.18 – klickbarer Hinweis und kompakter Datenstand */
.statusJumpButton {
  appearance: none;
  font: inherit;
  cursor: pointer;
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.statusJumpButton:hover {
  transform: translateY(-1px);
  box-shadow: 0 7px 18px rgba(146, 64, 14, .16);
}
.statusJumpButton:focus-visible {
  outline: 3px solid rgba(59, 130, 246, .38);
  outline-offset: 2px;
}
.statusIntro {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
  align-items: center;
  padding: 14px 16px;
}
.statusOverview {
  align-items: flex-end;
  gap: 5px;
  padding-left: 16px;
  border-left: 1px solid #bfdbfe;
  color: var(--muted);
  font-size: .76rem;
  white-space: nowrap;
}
.statusOverviewBadge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 5px 9px;
  border-radius: 999px;
  font-size: .72rem;
  font-weight: 820;
}
.statusOverviewBadge--warning { color: #92400e; background: #fef3c7; }
.statusOverviewBadge--ok { color: #166534; background: #dcfce7; }
.statusCards {
  gap: 12px;
}
.statusCard {
  min-height: 124px;
  padding: 15px;
  background: #fff;
  box-shadow: 0 4px 14px rgba(15, 23, 42, .035);
}
.statusCard--warning {
  grid-row: span 2;
  border-color: #fbbf24;
  background: linear-gradient(180deg, #fffdf5, #fffbeb);
  box-shadow: 0 8px 24px rgba(180, 83, 9, .08);
}
.statusCard--preserved {
  border-color: #ddd6fe;
  background: #fbfaff;
}
.statusCard h3 {
  margin-top: 16px;
}
.statusCard time {
  display: block;
  margin-top: 4px;
}
.statusErrorDetails {
  margin-top: 13px;
  padding: 10px 11px;
  border: 1px solid #fde68a;
  border-radius: 9px;
  color: #78350f;
  background: rgba(255,255,255,.78);
  font-size: .74rem;
  line-height: 1.45;
  overflow-wrap: anywhere;
}
.statusErrorDetails strong {
  display: block;
  margin-bottom: 5px;
  color: #92400e;
  font-size: .68rem;
  letter-spacing: .035em;
  text-transform: uppercase;
}
.statusErrorDetails ul {
  margin: 0;
  padding-left: 17px;
}
.statusErrorDetails li + li { margin-top: 4px; }
@media (max-width: 900px) {
  .statusIntro { grid-template-columns: 1fr 1fr; }
  .statusOverview {
    grid-column: 1 / -1;
    align-items: flex-start;
    padding: 10px 0 0;
    border-top: 1px solid #bfdbfe;
    border-left: 0;
  }
}
@media (max-width: 700px) {
  .statusIntro { grid-template-columns: 1fr; }
  .statusOverview { grid-column: auto; }
  .statusCards { grid-template-columns: 1fr; }
  .statusCard--warning { grid-row: auto; }
  .statusCard { min-height: 0; }
}

/* Dashboard v6.19 – FMP-Fallback und asynchroner Full Refresh */






.confidencePill--preserved {
  border: 1px solid #c4b5fd;
  background: #f3efff;
  color: #6d28d9;
}





.fullRefreshProgress {
  position: fixed;
  right: 22px;
  bottom: 22px;
  z-index: 2000;
  display: flex;
  width: min(520px, calc(100vw - 32px));
  align-items: center;
  gap: 11px;
  border: 1px solid #bfdbfe;
  border-radius: 13px;
  background: rgba(239, 246, 255, .98);
  box-shadow: 0 16px 38px rgba(15, 23, 42, .18);
  padding: 13px 15px;
  color: #1e3a8a;
  font-size: .78rem;
  line-height: 1.4;
  backdrop-filter: blur(10px);
}

.fullRefreshProgress--warning {
  border-color: #f2cc67;
  background: rgba(255, 248, 223, .98);
  color: #7a4b00;
}

.fullRefreshProgress--success {
  border-color: #86efac;
  background: rgba(240, 253, 244, .98);
  color: #166534;
}

.fullRefreshProgress--error {
  border-color: #fecaca;
  background: rgba(254, 242, 242, .98);
  color: #991b1b;
}

.fullRefreshProgressSpinner {
  width: 17px;
  height: 17px;
  flex: 0 0 auto;
  border: 2px solid currentColor;
  border-right-color: transparent;
  border-radius: 50%;
  animation: fullRefreshSpin .85s linear infinite;
}

.fullRefreshProgress--success .fullRefreshProgressSpinner,
.fullRefreshProgress--error .fullRefreshProgressSpinner {
  animation: none;
  border-right-color: currentColor;
}

@keyframes fullRefreshSpin {
  to { transform: rotate(360deg); }
}

@media (max-width: 700px) {
  .fullRefreshProgress {
    right: 12px;
    bottom: 12px;
    width: calc(100vw - 24px);
  }
}

/* Dashboard v6.20 – FMP ausschließlich per Full Refresh; Darstellung nutzt bestehenden Preserved-Status. */

/* ==========================================================
   Dashboard v6.21 – breiteres Desktop-Layout, kompakte Finanzen-
   Research-Tabelle und fokussierter Ironman-Tagesüberblick
   ========================================================== */

@media (min-width: 1101px) {
  .pageShell {
    width: min(1560px, calc(100% - 24px));
  }
}

.priorityBoardHeader h2,
.overviewDetailHeader--timestamped h2 {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 5px;
  margin: 0;
  font-size: 1.02rem;
}

.priorityBoardHeader h2 small,
.overviewDetailHeader--timestamped h2 small {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 700;
}

.priorityFocusCard {
  min-height: 102px;
  padding: 12px;
}

.priorityFocusCategory {
  display: block;
  color: #2563eb;
  font-size: .63rem !important;
  font-weight: 850;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.priorityFocusCard h3 {
  margin: 4px 0 0;
  color: var(--text);
  font-size: .86rem;
  line-height: 1.35;
}

.priorityFocusCard p {
  margin: 4px 0 0;
  color: var(--muted);
  font-size: .72rem;
  font-weight: 500;
  line-height: 1.4;
}

.financeFlow {
  display: grid;
  gap: 16px;
  margin-top: 14px;
}

.financeBlock {
  min-width: 0;
}

.financeBriefingBlock .insightBox {
  margin: 0;
}

.financeBlockHeader {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 10px;
}

.financeBlockHeader > div:first-child > span {
  display: block;
  color: #1d4ed8;
  font-size: .64rem;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.financeBlockHeader h3 {
  margin: 2px 0 0;
  color: var(--navy);
  font-size: 1rem;
}

.financeBlockHeader p {
  max-width: 680px;
  margin: 3px 0 0;
  color: var(--muted);
  font-size: .72rem;
  line-height: 1.4;
}



.financePositionsBlock .financeTableWrap {
  margin-top: 0;
}

.recommendationGrid--finance {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}



.researchMethod {
  margin: 0 0 11px;
  border: 1px solid #dbe7f5;
  border-radius: 10px;
  background: #f8fbff;
}

.researchMethod summary {
  padding: 9px 11px;
  color: #1d4ed8;
  cursor: pointer;
  font-size: .72rem;
  font-weight: 800;
}

.researchMethod[open] summary {
  border-bottom: 1px solid #e3ebf5;
}

.researchMethodGrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  padding: 10px 11px 7px;
}

.researchMethodGrid > div {
  padding: 9px;
  border-radius: 8px;
  background: #fff;
}

.researchMethodGrid strong,
.researchMethodGrid span {
  display: block;
}

.researchMethodGrid strong {
  color: var(--navy);
  font-size: .68rem;
}

.researchMethodGrid span {
  margin-top: 4px;
  color: var(--muted);
  font-size: .64rem;
  line-height: 1.4;
}

.researchMethod > p {
  margin: 0;
  padding: 0 11px 10px;
  color: var(--muted);
  font-size: .62rem;
}



























































.profitsYearlyWrap {
  max-width: 920px;
}

.profitsYearlyTable {
  table-layout: fixed;
}

.profitYearCol {
  width: 74px;
}

.profitYearValueCol {
  width: calc((100% - 74px) / 4);
}

.profitsYearlyTable th,
.profitsYearlyTable td {
  padding: 10px 12px;
}

@media (max-width: 1100px) {
  .recommendationGrid--finance,
  .researchMethodGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  

  

  

  .priorityBoardHeader h2,
  .overviewDetailHeader--timestamped h2 {
    font-size: .95rem;
  }

  .priorityBoardHeader h2 small,
  .overviewDetailHeader--timestamped h2 small {
    font-size: .66rem;
  }

  .profitsYearlyWrap {
    max-width: none;
  }

  .profitYearCol {
    width: 52px;
  }
}

/* ==========================================================
   Dashboard v6.22 – Neu1-Layout, einheitliche Zeitangaben und
   kompakter Datenstand
   ========================================================== */

/* Einheitlicher, ruhiger Kopf für alle Inhaltsbereiche. */
.panelMeta {
  color: #64748b;
  font-size: .72rem;
  font-weight: 650;
  white-space: nowrap;
}

/* Home-KPIs gemäß Neu1: Quelle und Datenzeit stehen direkt im Titel. */
.kpiTop {
  justify-content: flex-start;
  align-items: center;
}

.kpiTop > span:last-child {
  min-width: 0;
  overflow-wrap: anywhere;
}

/* Datenstand kompakter, ohne die Fehlerdetails zu verstecken. */
.statusCompact .panelHeader {
  margin-bottom: 12px;
  padding-bottom: 9px;
}

.statusCompact .panelTitle h2 {
  font-size: 1.08rem;
}

.statusCompact .statusIntro {
  gap: 9px;
  padding: 10px 12px;
  border-radius: 11px;
}

.statusCompact .statusIntro strong {
  font-size: .62rem;
  letter-spacing: .055em;
}

.statusCompact .statusIntro span {
  margin-top: 1px;
  font-size: .78rem;
}

.statusCompact .statusOverview {
  gap: 3px;
  padding-left: 12px;
  font-size: .68rem;
}

.statusCompact .statusOverviewBadge {
  padding: 4px 7px;
  font-size: .64rem;
}

.statusCompact .statusCards {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-top: 10px;
}

.statusCompact .statusCard {
  min-height: 92px;
  padding: 10px 11px;
  border-radius: 10px;
  box-shadow: 0 3px 10px rgba(15, 23, 42, .03);
}

.statusCompact .statusCard--warning {
  grid-row: auto;
  grid-column: span 2;
}

.statusCompact .statusCardTop {
  gap: 7px;
}

.statusCompact .statusIcon {
  font-size: 1rem;
}

.statusCompact .statusState {
  gap: 4px;
  padding: 3px 6px;
  font-size: .61rem;
}

.statusCompact .statusState i {
  width: 6px;
  height: 6px;
}

.statusCompact .statusCard h3 {
  margin: 8px 0 1px;
  font-size: .8rem;
  line-height: 1.25;
}

.statusCompact .statusCard time {
  margin-top: 1px;
  font-size: .76rem;
  font-weight: 760;
}

.statusCompact .statusErrorDetails {
  margin-top: 8px;
  padding: 8px 9px;
  font-size: .68rem;
  line-height: 1.38;
}

.statusCompact .statusErrorDetails strong {
  margin-bottom: 4px;
  font-size: .61rem;
}

@media (max-width: 1180px) {
  .statusCompact .statusCards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 900px) {
  .statusCompact .statusCards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .statusCompact .statusCard--warning {
    grid-column: 1 / -1;
  }
}

@media (max-width: 700px) {
  .statusCompact .panelMeta {
    display: none;
  }
  .statusCompact .statusCards {
    grid-template-columns: 1fr;
  }
  .statusCompact .statusCard--warning {
    grid-column: auto;
  }
}

/* ==========================================================
   Dashboard v6.23 – Finanzen-KPIs im Home-Stil und reduzierter Header
   ========================================================== */

/* Der Markenname steht für sich; die zusätzliche Claim-Zeile entfällt. */
.heroCopy {
  display: flex;
  min-width: 0;
  flex-direction: column;
  justify-content: center;
}

/* Die Finanz-KPIs verwenden dieselbe visuelle Hierarchie wie auf Home. */
.financeHeroKpis {
  margin-bottom: 0;
}

.financeHeroKpis .kpiCard {
  min-height: 136px;
}

.financeHeroKpis .kpiValue {
  margin-top: 18px;
}

.financeHeroKpis .kpiDetail {
  font-weight: 650;
}

@media (max-width: 760px) {
  .financeHeroKpis {
    grid-template-columns: 1fr;
  }
}


/* Dashboard v6.25 – konsistente Finanzzeilen und AI-Kennzeichnung */


.financeTable td[data-label="Aktuell"] strong,
.financeTable td[data-label="Gesamt"] strong,
.mobileFinanceTable td:nth-child(4) strong,
.mobileFinanceTable td:nth-child(5) strong {
  display: block;
  font-variant-numeric: tabular-nums;
}

.financeTable td[data-label="Aktuell"] span,
.financeTable td[data-label="Gesamt"] span,
.mobileFinanceTable td:nth-child(4) span,
.mobileFinanceTable td:nth-child(5) span {
  display: block;
  margin-top: 2px;
  color: inherit;
  opacity: .86;
  font-size: .72rem;
  font-variant-numeric: tabular-nums;
}

.financeTable td.neutral strong,
.financeTable td.neutral span,
.mobileFinanceTable td.neutral strong,
.mobileFinanceTable td.neutral span {
  color: var(--muted) !important;
}

@media (max-width: 760px) {
  
}

/* Dashboard v6.25 – kompakte, einzeilige Finanzüberschriften */
.financeBriefingBox strong {
  color: #1d4ed8;
}

.financeBriefingBox strong small {
  color: var(--muted);
  font-size: inherit;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}

.financeInlineEyebrow {
  color: #1d4ed8;
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .07em;
  text-transform: uppercase;
}





@media (max-width: 760px) {
  

  .financeInlineEyebrow {
    margin-right: 5px;
  }
}


/* ==========================================================
   Dashboard v6.26 – strukturierte Briefings, neue Trainingssteuerung,
   zentrierte Tabellen und mobile Profits
   ========================================================== */
.marketBriefingList {
  display: grid;
  gap: 5px;
  margin: 7px 0 0;
  padding-left: 20px;
  color: var(--text);
  font-size: .86rem;
  line-height: 1.45;
}
.marketBriefingList li::marker { color: #2563eb; }
.briefingMiniList {
  display: grid;
  gap: 4px;
  margin: 5px 0 0;
  padding-left: 17px;
  color: var(--text);
  font-size: .76rem;
  line-height: 1.4;
}
.briefingMiniList li::marker { color: #2563eb; }
.claudeBriefGrid section small {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: .66rem;
  line-height: 1.4;
}

.trainingSteering {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1fr) minmax(0, 1.35fr);
  gap: 12px;
  margin: 14px 0 18px;
}
.trainingSteeringCard {
  min-width: 0;
  min-height: 150px;
  padding: 15px 16px;
  border: 1px solid #dbe4ef;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(15,23,42,.035);
}
.trainingSteeringEyebrow {
  display: block;
  color: #1d4ed8;
  font-size: .66rem;
  font-weight: 850;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.trainingSteeringEyebrow small {
  color: var(--muted);
  font-size: inherit;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
}
.trainingSteeringValue {
  margin-top: 13px;
  color: var(--navy);
  font-size: 1.9rem;
  font-weight: 850;
  letter-spacing: -.035em;
  line-height: 1;
}
.trainingSteeringCard p {
  margin: 7px 0 0;
  color: var(--muted);
  font-size: .73rem;
  line-height: 1.45;
}
.trainingProgress {
  height: 8px;
  overflow: hidden;
  margin-top: 13px;
  border-radius: 999px;
  background: #e8eef6;
}
.trainingProgress i {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg,#2563eb,#16a34a);
}
.trainingBalanceRows {
  display: grid;
  gap: 9px;
  margin-top: 12px;
}
.trainingBalanceRows > div {
  display: grid;
  grid-template-columns: 80px 54px minmax(0,1fr);
  align-items: center;
  gap: 8px;
  color: var(--muted);
  font-size: .7rem;
}
.trainingBalanceRows b { color: var(--text); text-align: right; font-variant-numeric: tabular-nums; }
.trainingBalanceRows i {
  height: 7px;
  overflow: hidden;
  border-radius: 999px;
  background: #e8eef6;
}
.trainingBalanceRows em { display:block; height:100%; border-radius:inherit; background:#2563eb; }
.trainingSteeringCard--focus {
  border-color: #bbf7d0;
  background: #f0fdf4;
}
.trainingSteeringCard--focus h3 {
  margin: 12px 0 0;
  color: var(--text);
  font-size: 1rem;
  line-height: 1.35;
}
.trainingSteeringCard--focus > strong {
  display: block;
  margin-top: 7px;
  color: #166534;
  font-size: .74rem;
}
.trainingSteeringCard--focus p { color: #3f5f4c; }
.trainingRecentSection { margin-top: 20px; }

.trainingTableWrap,
.profitsYearlyWrap,
.profitsDetailWrap {
  margin-right: auto;
  margin-left: auto;
}
.trainingTableWrap { max-width: 1240px; }
.profitsYearlyWrap { max-width: 920px; }
.profitsDetailWrap { max-width: 1380px; }

.mobileProfitYearlyTable th,
.mobileProfitYearlyTable td,
.mobileProfitDetailTable th,
.mobileProfitDetailTable td { text-align: right; }
.mobileProfitYearlyTable th:first-child,
.mobileProfitYearlyTable td:first-child,
.mobileProfitDetailTable th:first-child,
.mobileProfitDetailTable td:first-child { text-align: left; }
.mobileProfitYearlyTable td span,
.mobileProfitDetailTable td span { white-space: normal; }
.mobileProfitDetailTable .mobileProfitPosition { text-align: left; white-space: normal; }
.mobileProfitDetailTable .mobileProfitPosition strong {
  display: -webkit-box;
  overflow: hidden;
  white-space: normal;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.mobileProfitDetailTable .profitTypeBadge {
  justify-content: center;
  padding: 4px 6px;
  font-size: .6rem;
}

@media (max-width: 1000px) {
  .trainingSteering { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .trainingSteeringCard--focus { grid-column: 1 / -1; }
}

@media (max-width: 700px) {
  .mobileHeader {
    padding: 11px 12px 10px;
    border-radius: 14px;
  }
  .mobileBrand strong { font-size: 1.08rem; }
  .mobileBrand span { font-size: .69rem; }
  .mobileHeaderStatus {
    margin-top: 7px;
    padding-top: 0;
    border-top: 0;
  }
  .mobileWarning,.mobileStatusOk { min-height: 22px; font-size: .65rem; }
  .tabBar { scroll-padding-inline: 5px; }
  .tabButton { scroll-snap-align: start; }

  .trainingSteering { grid-template-columns: 1fr; gap: 9px; margin-top: 11px; }
  .trainingSteeringCard,
  .trainingSteeringCard--focus { grid-column: auto; min-height: 0; padding: 12px; border-radius: 12px; }
  .trainingSteeringValue { margin-top: 9px; font-size: 1.55rem; }
  .trainingBalanceRows { margin-top: 9px; }
  .trainingBalanceRows > div { grid-template-columns: 70px 48px minmax(0,1fr); }
  .trainingSteeringCard--focus h3 { margin-top: 8px; font-size: .9rem; }
  .marketBriefingList { font-size: .78rem; line-height: 1.42; }

  .mobileProfitYearlyWrap,
  .mobileProfitDetailWrap { width: 100%; margin: 0 auto; overflow: hidden; border: 1px solid #dbe4ef; border-radius: 12px; }
  .mobileProfitYearlyTable,
  .mobileProfitDetailTable { width: 100%; table-layout: fixed; }
  .mobileProfitYearlyTable th:nth-child(1) { width: 18%; }
  .mobileProfitYearlyTable th:nth-child(2) { width: 22%; }
  .mobileProfitYearlyTable th:nth-child(3) { width: 28%; }
  .mobileProfitYearlyTable th:nth-child(4) { width: 32%; }
  .mobileProfitDetailTable th:nth-child(1) { width: 22%; }
  .mobileProfitDetailTable th:nth-child(2) { width: 20%; }
  .mobileProfitDetailTable th:nth-child(3) { width: 38%; }
  .mobileProfitDetailTable th:nth-child(4) { width: 20%; }
  .mobileProfitYearlyTable th,.mobileProfitDetailTable th { font-size: .58rem; padding: 8px 4px; }
  .mobileProfitYearlyTable td,.mobileProfitDetailTable td { font-size: .65rem; padding: 9px 4px; }
  .mobileProfitYearlyTable td strong,.mobileProfitDetailTable td strong { font-size: .68rem; }
  .mobileProfitYearlyTable td span,.mobileProfitDetailTable td span { font-size: .55rem; }
}

@media (max-width: 520px) {
  .kpiGrid--three,
  .financeHeroKpis {
    grid-template-columns: 1fr !important;
  }
  .financeHeroKpis .kpiCard,
  .kpiGrid--three .kpiCard {
    min-height: 102px !important;
  }
  .financeHeroKpis .kpiValue,
  .kpiGrid--three .kpiValue {
    font-size: 1.35rem !important;
    overflow-wrap: normal;
  }
  .trainingKpiGrid { grid-template-columns: repeat(2,minmax(0,1fr)) !important; }
}


/* Dashboard v6.27 – globale Sichtbarkeit von Euro-Beträgen */
.euroSensitive {
  border-radius: .28em;
  transition: color .16s ease, background-color .16s ease, box-shadow .16s ease;
  white-space: nowrap;
}

.euroSensitive.isEuroMasked {
  padding: 0 .18em;
  color: #8795a9 !important;
  background: #e5eaf1;
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, .16);
  font-variant-numeric: normal;
  letter-spacing: .035em;
  text-shadow: none;
  user-select: none;
}

.userMenuPanel .userMenuActionState {
  width: auto;
  min-width: 36px;
  margin-left: auto;
  padding: 3px 7px;
  border-radius: 999px;
  color: #166534;
  background: #dcfce7;
  font-size: .68rem;
  font-weight: 850;
  line-height: 1.2;
  text-align: center;
}

.userMenuPanel [data-euro-visibility-toggle].isEuroHidden .userMenuActionState {
  color: #64748b;
  background: #e2e8f0;
}

.userMenuPanel [data-euro-visibility-toggle].isEuroHidden .euroVisibilityIcon {
  opacity: .52;
  filter: grayscale(1);
}


/* ==========================================================
   Dashboard v6.28 – mobile Vollbreite und kompaktere Abstände
   ========================================================== */
@media (max-width: 700px) {
  html {
    background: var(--background);
  }

  body {
    width: 100%;
    min-width: 0;
  }

  /* Nahezu randloser App-Rahmen; Safe-Area bleibt berücksichtigt. */
  .pageShell {
    width: 100%;
    max-width: none;
    margin: 0;
    padding:
      max(4px, env(safe-area-inset-top))
      4px
      calc(14px + env(safe-area-inset-bottom));
  }

  .mobileHeader {
    padding: 10px 10px 8px;
    border-radius: 12px;
  }

  .mobileHeaderTop {
    gap: 8px;
  }

  .mobileHeaderStatus {
    margin-top: 5px;
  }

  .tabBar {
    top: max(0px, env(safe-area-inset-top));
    margin-top: 4px;
    padding: 4px;
    gap: 2px;
    border-radius: 11px;
  }

  .tabButton {
    min-height: 34px;
    padding: 0 9px;
  }

  /* Hauptinhalt nutzt die verfügbare Breite statt mehrerer Innenränder. */
  .tabPanel {
    width: 100%;
    margin-top: 4px;
    padding: 6px;
    border-radius: 12px;
  }

  .panelHeader {
    margin-bottom: 8px;
    padding: 5px 2px 8px;
  }

  .panelTitle h2 {
    font-size: 1.22rem;
  }

  .miniKpiGrid,
  .kpiGrid,
  .kpiGrid--three,
  .kpiGrid--four {
    gap: 6px !important;
  }

  .miniKpi,
  .kpiCard {
    padding: 9px 10px !important;
    border-radius: 10px !important;
  }

  /* Home: weniger verschachtelte Polsterung und kürzere Karten. */
  .priorityBoard {
    margin-top: 7px;
    padding: 8px;
    border-radius: 11px;
  }

  .priorityBoardGrid {
    gap: 7px;
    margin-top: 8px;
  }

  .priorityFocusCard {
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 8px;
    min-height: 0;
    padding: 9px;
    border-radius: 10px;
  }

  .priorityFocusIcon {
    width: 34px;
    height: 34px;
  }

  .priorityFocusCard h3 {
    font-size: .84rem;
  }

  .priorityFocusCard p {
    font-size: .69rem;
    line-height: 1.35;
  }

  .overviewContentGrid {
    gap: 7px;
    margin-top: 7px;
  }

  .overviewDetailCard {
    min-height: 0;
    padding: 9px;
    border-radius: 10px;
  }

  .claudeBriefGrid {
    gap: 7px;
    margin-top: 8px;
  }

  .claudeBriefGrid section {
    padding: 9px;
    border-radius: 9px;
  }

  .claudeBriefGrid p {
    margin-top: 4px;
    line-height: 1.4;
  }

  /* Finanzen: die im Screenshot auffälligen großen Zwischenräume entfallen. */
  .financeFlow {
    gap: 8px;
    margin-top: 7px;
  }

  

  

  

  .financeBlockHeader p {
    margin-top: 1px;
    line-height: 1.3;
  }

  .financeBriefingBox,
  .insightBox,
  .warningBox {
    padding: 9px 10px;
    border-radius: 10px;
  }

  .marketBriefingList {
    gap: 3px;
    margin-top: 5px;
    padding-left: 18px;
  }

  .recommendationGrid,
  .recommendationGrid--finance {
    gap: 7px;
  }

  .recommendationCard {
    padding: 9px;
    border-radius: 10px;
  }

  /* Mehr Platz für Prozentwerte; Kurs/Wert bleiben kompakt. */
  .mobileFinancePosition { width: 29%; }
  .mobileFinancePrice { width: 13%; }
  .mobileFinanceValue { width: 16%; }
  .mobileFinanceCurrent,
  .mobileFinanceTotal { width: 21%; }

  .mobileFinanceTable th {
    padding-right: 2px;
    padding-left: 2px;
    font-size: .59rem;
  }

  .mobileFinanceTable td {
    padding-right: 2px;
    padding-left: 2px;
  }

  .mobileFinanceTable td strong,
  .mobileFinanceTable td.positive strong,
  .mobileFinanceTable td.negative strong {
    font-size: .69rem;
    line-height: 1.08;
  }

  .mobileFinanceTable td span {
    font-size: .56rem;
  }

  /* Training/Profits ebenfalls näher an den Bildschirmrand. */
  .trainingSteering {
    gap: 7px;
    margin: 7px 0 10px;
  }

  .trainingSteeringCard,
  .trainingSteeringCard--focus {
    padding: 9px;
    border-radius: 10px;
  }

  .mobileDataTable {
    margin-top: 8px;
    border-radius: 10px;
  }

  .mobileProfitYearlyWrap,
  .mobileProfitDetailWrap {
    border-radius: 10px;
  }
}

@media (max-width: 370px) {
  .pageShell {
    padding-right: 2px;
    padding-left: 2px;
  }

  .tabPanel {
    padding: 4px;
  }

  
}


/* ============================================================
   Dashboard v6.30 – sichtbare Aktualisierung im Header
   ============================================================ */
.heroStatusActions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  width: 100%;
}

.refreshButton--header {
  min-width: 142px;
  background: rgba(255, 255, 255, 0.16);
  box-shadow: 0 4px 14px rgba(7, 24, 58, 0.16);
}

.refreshButton--header:hover:not(:disabled) {
  background: rgba(255, 255, 255, 0.26);
}

@media (max-width: 620px) {
  .heroStatusActions {
    gap: 7px;
  }

  .refreshButton--header {
    min-width: 0;
    width: auto;
    padding: 0 12px;
  }
}


/* ============================================================
   Dashboard v6.31 – Header-Aktionen in einer Zeile
   ============================================================ */
.desktopHeader .heroMain {
  align-items: center;
}

.heroActions--header {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: nowrap;
  gap: 10px;
  min-width: 0;
}

.refreshButton--header.refreshButton--icon {
  flex: 0 0 46px;
  width: 46px;
  min-width: 46px;
  height: 46px;
  min-height: 46px;
  padding: 0;
  border-radius: 11px;
  font-size: 1.35rem;
  line-height: 1;
}

.heroActions--header .heroWarning--row,
.heroActions--header .heroStatusOk {
  flex: 0 0 auto;
  white-space: nowrap;
}

@media (max-width: 1100px) and (min-width: 701px) {
  .desktopHeader .heroMain {
    gap: 16px;
  }

  .heroActions--header {
    gap: 7px;
  }

  .heroActions--header .userBadge {
    padding-right: 9px;
    padding-left: 9px;
  }

  .heroActions--header .heroWarning--row,
  .heroActions--header .heroStatusOk {
    font-size: .72rem;
  }
}



.claudeBriefGrid--actions section {
  min-height: 165px;
}
.briefingAction h3 {
  margin: 8px 0 0;
  color: var(--text);
  font-size: .95rem;
  line-height: 1.35;
}
.briefingAction > strong {
  display: block;
  margin-top: 6px;
  color: #1e3a5f;
  font-size: .72rem;
}








.investmentTypeBadge {
  color: #1d4ed8;
  font-size: .66rem;
  font-weight: 850;
  letter-spacing: .06em;
  text-transform: uppercase;
}





/* ============================================================
   Dashboard v6.35 – Depot- und Profits-Charts
   ============================================================ */

.portfolioHistoryPanel,
.profitChartPanel {
  overflow: hidden;
}

.portfolioChartHeader,
.profitChartHeader {
  align-items: flex-start;
}

.portfolioChartFreshness {
  color: var(--muted);
  font-size: 0.82rem;
  white-space: nowrap;
}

.portfolioChartToolbar {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin: 2px 0 16px;
}

.chartSegment {
  display: inline-flex;
  gap: 4px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card-soft);
}

.chartToggle {
  min-height: 34px;
  padding: 0 11px;
  border: 0;
  border-radius: 7px;
  color: #475569;
  background: transparent;
  cursor: pointer;
  font-size: 0.82rem;
  font-weight: 750;
}

.chartToggle:hover:not(:disabled) {
  color: var(--navy);
  background: #ffffff;
}

.chartToggle.isActive {
  color: white;
  background: var(--navy);
  box-shadow: 0 3px 10px rgba(23, 52, 109, 0.18);
}

.chartToggle:disabled {
  cursor: not-allowed;
  opacity: 0.42;
}

.portfolioChartCanvas {
  min-height: 300px;
}

.portfolioChartStats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-bottom: 8px;
}

.portfolioChartStats > div {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card-soft);
}

.portfolioChartStats span {
  color: var(--muted);
  font-size: 0.78rem;
}

.portfolioChartStats strong {
  font-size: 1rem;
}

.portfolioChartSvg,
.profitHistorySvg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}

.chartGridLine {
  stroke: #e2e8f0;
  stroke-width: 1;
}

.chartAxisLabel {
  fill: #64748b;
  font-family: inherit;
  font-size: 12px;
}

.chartAxisLabel--y {
  text-anchor: end;
}

.portfolioChartArea {
  fill: url(#portfolioAreaGradient);
}

.portfolioChartLine {
  fill: none;
  stroke: var(--navy-light);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 3.4;
}

.portfolioChartPoint {
  fill: white;
  stroke: var(--navy-light);
  stroke-width: 2.2;
}

.chartMethodNote {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 0.82rem;
}

.chartEmptyState {
  display: flex;
  min-height: 170px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 24px;
  border: 1px dashed #cbd5e1;
  border-radius: 12px;
  color: var(--muted);
  background: var(--card-soft);
  text-align: center;
}

.chartEmptyState strong {
  color: var(--text);
  font-size: 1rem;
}

.profitChartPanel {
  margin-bottom: 16px;
}

.profitChartHeader {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 12px;
}

.profitChartHeader h3,
.profitChartHeader p {
  margin: 0;
}

.profitChartHeader p {
  margin-top: 3px;
  color: var(--muted);
  font-size: 0.84rem;
}

.profitChartLegend {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px 12px;
  color: var(--muted);
  font-size: 0.78rem;
}

.profitChartLegend span {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}

.profitChartLegend i {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 3px;
}

.legendSales {
  background: var(--green);
}

.legendDividends {
  background: #86d6a2;
}

.legendTotal {
  border-radius: 50% !important;
  background: var(--text);
}

.profitChartRowLine {
  stroke: #edf1f6;
  stroke-width: 1;
}

.profitChartZero {
  stroke: #94a3b8;
  stroke-dasharray: 4 4;
  stroke-width: 1.2;
}

.profitChartSales.isPositive {
  fill: var(--green);
}

.profitChartSales.isNegative {
  fill: var(--red);
}

.profitChartDividends {
  fill: #86d6a2;
}

.profitChartTotal {
  fill: white;
  stroke-width: 2.5;
}

.profitChartTotal.isPositive {
  stroke: var(--green);
}

.profitChartTotal.isNegative {
  stroke: var(--red);
}

.profitChartYear,
.profitChartValue {
  fill: var(--text);
  font-family: inherit;
  font-size: 12.5px;
  font-weight: 750;
}

.profitChartValue.positive {
  fill: var(--green);
}

.profitChartValue.negative {
  fill: var(--red);
}

.euroChartPlaceholder {
  display: none;
  min-height: 190px;
  place-items: center;
  padding: 22px;
  border: 1px dashed #cbd5e1;
  border-radius: 12px;
  color: var(--muted);
  background: #f8fafc;
  text-align: center;
}

.euroChart.isEuroChartHidden .euroChartContent {
  display: none;
}

.euroChart.isEuroChartHidden .euroChartPlaceholder {
  display: grid;
}

@media (max-width: 700px) {
  .portfolioChartToolbar,
  .profitChartHeader {
    flex-direction: column;
  }

  .portfolioChartToolbar {
    align-items: stretch;
  }

  .chartSegment {
    display: grid;
    grid-auto-flow: column;
    grid-auto-columns: 1fr;
  }

  .chartToggle {
    padding: 0 7px;
    font-size: 0.78rem;
  }

  .portfolioChartStats {
    grid-template-columns: 1fr 1fr;
  }

  .portfolioChartCanvas {
    min-height: 250px;
  }

  .chartAxisLabel {
    font-size: 11px;
  }

  .profitChartLegend {
    justify-content: flex-start;
  }
}


/* ============================================================
   Dashboard v6.35.4 – vollständige Profits-Historie und grüne Ergebnisfarben
   ============================================================ */

.interactiveChartShell {
  position: relative;
  min-width: 0;
}

.chartTooltip {
  position: absolute;
  z-index: 30;
  display: grid;
  min-width: 180px;
  gap: 6px;
  padding: 10px 12px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 10px;
  color: #fff;
  background: rgba(15, 23, 42, 0.96);
  box-shadow: 0 10px 26px rgba(15, 23, 42, 0.2);
  opacity: 0;
  pointer-events: none;
  transform: translateY(3px);
  transition: opacity 100ms ease, transform 100ms ease;
}

.chartTooltip.isVisible {
  opacity: 1;
  transform: translateY(0);
}

.chartTooltip strong {
  font-size: 0.82rem;
  line-height: 1.25;
}

.chartTooltip span {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  font-size: 0.78rem;
  line-height: 1.25;
}

.chartTooltip em {
  color: #cbd5e1;
  font-style: normal;
}

.chartTooltip b {
  color: #fff;
  font-weight: 800;
  white-space: nowrap;
}

.chartTooltip--wide {
  min-width: 220px;
}

.portfolioChartHitArea,
.profitChartHitArea {
  fill: transparent;
  cursor: crosshair;
  outline: none;
}

.portfolioChartHitArea:focus,
.profitChartHitArea:focus {
  fill: rgba(37, 83, 160, 0.055);
}

.profitChartHitArea:hover {
  fill: rgba(37, 83, 160, 0.045);
}

.portfolioChartCrosshair {
  stroke: #64748b;
  stroke-width: 1;
  stroke-dasharray: 4 4;
  opacity: 0;
  pointer-events: none;
}

.portfolioChartHoverPoint {
  fill: #fff;
  stroke: var(--navy-light);
  stroke-width: 3;
  opacity: 0;
  pointer-events: none;
}

.portfolioChartCrosshair.isVisible,
.portfolioChartHoverPoint.isVisible {
  opacity: 1;
}

.profitChartPanel {
  width: min(100%, 1120px);
  margin: 18px auto 22px;
}

.profitChartHeader {
  margin-bottom: 8px;
}

.profitHistorySvg {
  max-height: 430px;
}

@media (max-width: 700px) {
  .chartTooltip {
    min-width: 160px;
    padding: 8px 10px;
  }

  .chartTooltip--wide {
    min-width: 190px;
  }

  .profitChartPanel {
    width: 100%;
  }

  .profitHistorySvg {
    max-height: none;
  }
}


/* ==================== v6.36.2 · Finanz-Überblick ==================== */

.wealthHero {
  display: grid;
  grid-template-columns: minmax(245px, .78fr) minmax(0, 2.1fr);
  gap: 12px;
  align-items: stretch;
  margin-bottom: 16px;
}

.wealthHero > div:first-child {
  display: flex;
  min-height: 138px;
  flex-direction: column;
  justify-content: center;
  padding: 18px 20px;
  border: 1px solid #d8e3f3;
  border-radius: 13px;
  background:
    linear-gradient(135deg, rgba(37, 82, 160, .05), transparent 65%),
    #f8fbff;
}

.wealthHero > div:first-child > span {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.wealthHero > div:first-child > strong {
  margin-top: 4px;
  color: var(--navy);
  font-size: clamp(1.9rem, 3.2vw, 2.65rem);
  line-height: 1.05;
  letter-spacing: -.045em;
}

.wealthHero > div:first-child > small {
  margin-top: 7px;
  color: var(--muted);
  font-size: .76rem;
}

.wealthKpiGrid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.wealthKpiCard {
  display: flex;
  min-height: 138px;
  flex-direction: column;
  justify-content: center;
  padding: 14px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--card-soft);
}

.wealthKpiCard--cash { border-top: 3px solid #2563eb; }
.wealthKpiCard--depot { border-top: 3px solid #17346d; }
.wealthKpiCard--robo { border-top: 3px solid #7c3aed; }
.wealthKpiCard--crypto { border-top: 3px solid #d97706; }

.wealthKpiLabel {
  display: flex;
  align-items: center;
  gap: 7px;
  color: var(--muted);
  font-size: .74rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .035em;
}

.wealthKpiCard > strong {
  margin-top: 8px;
  font-size: clamp(1.12rem, 1.7vw, 1.42rem);
  line-height: 1.1;
  letter-spacing: -.025em;
}

.wealthKpiCard > small {
  margin-top: 5px;
  color: var(--muted);
  font-size: .69rem;
  line-height: 1.3;
}

.wealthUnvalued {
  display: grid;
  grid-template-columns: minmax(220px, .8fr) minmax(0, 1.8fr);
  gap: 14px;
  align-items: center;
  margin: 12px 0 18px;
  padding: 12px 14px;
  border: 1px solid #fde68a;
  border-radius: 10px;
  background: var(--amber-soft);
}

.wealthUnvalued > div {
  display: flex;
  flex-direction: column;
}

.wealthUnvalued strong {
  color: #92400e;
  font-size: .75rem;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.wealthUnvalued span {
  margin-top: 2px;
  font-weight: 760;
}

.wealthUnvalued p {
  margin: 0;
  color: #78350f;
  font-size: .77rem;
}

.wealthSection {
  margin-top: 18px;
}

.wealthSection + .wealthSection {
  margin-top: 22px;
}

.wealthSectionHeader {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 8px;
}

.wealthSectionHeader h3 {
  margin: 1px 0 0;
  color: var(--navy);
  font-size: 1rem;
  letter-spacing: -.015em;
}

.wealthSectionHeader > span {
  color: var(--muted);
  font-size: .72rem;
}

.wealthEyebrow {
  color: var(--muted);
  font-size: .66rem;
  font-weight: 850;
  letter-spacing: .075em;
  text-transform: uppercase;
}

.wealthCurrentTableWrap,
.wealthHistoryTableWrap {
  margin-top: 0;
}

.wealthCurrentTable {
  min-width: 620px;
}

.wealthCurrentTable th:first-child {
  width: 58%;
}

.wealthCategoryRow td {
  background: #edf4fc !important;
  border-top: 1px solid #dbe7f6;
}

.wealthCategoryRow td:first-child {
  color: var(--navy);
}

.wealthIndent {
  padding-left: 28px !important;
  color: #334155;
}

.wealthHistoryTable {
  min-width: 960px;
  table-layout: auto;
}

.wealthHistoryTable th:first-child {
  min-width: 125px;
}

.wealthHistoryTable td,
.wealthHistoryTable th {
  font-variant-numeric: tabular-nums;
}

.wealthHistoryTable th {
  font-size: .86rem;
}

.wealthHistoryTable td {
  font-size: .91rem;
}

.wealthHistoryTable td:not(:first-child) {
  font-weight: 560;
}

.wealthHistoryTable .wealthHistoryTotal {
  font-size: .98rem;
  font-weight: 800;
}

.wealthHistoryTotal {
  color: var(--navy);
}

.wealthHistoryCurrent td {
  background: #f0fdf4 !important;
  border-top-color: #bbf7d0;
  border-bottom: 1px solid #bbf7d0;
}

.wealthHistoryCurrent td:first-child strong::after {
  content: " aktuell";
  display: inline-flex;
  margin-left: 6px;
  padding: 1px 5px;
  border-radius: 5px;
  color: var(--green);
  background: #dcfce7;
  font-size: .58rem;
  font-weight: 850;
  text-transform: uppercase;
  vertical-align: 1px;
}

.wealthNotes {
  margin-top: 18px;
  padding: 11px 13px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--card-soft);
}

.wealthNotes summary {
  color: #475569;
  cursor: pointer;
  font-size: .76rem;
  font-weight: 780;
}

.wealthNotes ul {
  margin: 9px 0 0;
  padding-left: 19px;
  color: var(--muted);
  font-size: .75rem;
}

.wealthNotes li + li {
  margin-top: 5px;
}

@media (max-width: 980px) {
  .wealthHero {
    grid-template-columns: 1fr;
  }

  .wealthKpiGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .wealthHero > div:first-child,
  .wealthKpiCard {
    min-height: 112px;
  }
}

@media (max-width: 640px) {
  .wealthKpiGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .wealthKpiCard {
    min-height: 104px;
    padding: 11px;
  }

  .wealthKpiCard > strong {
    font-size: 1.05rem;
  }

  .wealthUnvalued {
    grid-template-columns: 1fr;
    gap: 5px;
  }

  .wealthSectionHeader {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }

  .wealthHistoryTableWrap {
    border: 0;
    overflow: visible;
  }

  .wealthHistoryTable {
    min-width: 0;
  }

  .wealthHistoryTable thead {
    display: none;
  }

  .wealthHistoryTable,
  .wealthHistoryTable tbody,
  .wealthHistoryTable tr,
  .wealthHistoryTable td {
    display: block;
    width: 100%;
  }

  .wealthHistoryTable tr {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
    margin-bottom: 9px;
    overflow: hidden;
    border: 1px solid var(--line);
    border-radius: 10px;
    background: white;
  }

  .wealthHistoryTable td {
    position: relative;
    min-height: 54px;
    padding: 22px 10px 8px !important;
    border-top: 0 !important;
    border-right: 1px solid #eef2f7;
    background: transparent !important;
    text-align: right !important;
  }

  .wealthHistoryTable td:first-child,
  .wealthHistoryTable td:nth-child(7),
  .wealthHistoryTable td:nth-child(8) {
    grid-column: span 2;
  }

  .wealthHistoryTable td::before {
    position: absolute;
    top: 6px;
    left: 10px;
    color: var(--muted-light);
    content: attr(data-label);
    font-size: .62rem;
    font-weight: 800;
    letter-spacing: .045em;
    text-transform: uppercase;
  }

  .wealthHistoryTable td:first-child {
    min-height: 50px;
    padding-top: 20px !important;
    text-align: left !important;
    background: #f8fafc !important;
  }

  .wealthHistoryCurrent td:first-child,
  .wealthHistoryCurrent td:nth-child(7),
  .wealthHistoryCurrent td:nth-child(8) {
    background: #f0fdf4 !important;
  }
}


/* ==========================================================
   Dashboard v6.36.3 – Lesbarkeit, kompakter Datenstand, Finanz-Akkordeons
   ========================================================== */

.financeHeroKpis--two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.financeHeroKpis--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* Tabellen: weniger hellgrau, größer und kontrastreicher. */
.dataTable { color:#334155; font-size:.88rem; }
.dataTable th { color:#334155; font-size:.82rem; font-weight:800; }
.dataTable td { color:#334155; font-size:.86rem; font-weight:520; }
.positionCell span,
.dataTable td > span { color:#64748b; font-size:.74rem; font-weight:600; }
.profitsYearlyTable td:not(:first-child),
.profitsDetailTable td:not(:first-child) { color:#334155; }
.profitsYearlyTable td strong,
.profitsDetailTable td strong { color:#0f172a; }

/* Finanz-Überblick: Kategorien als aufklappbare Gruppen. */
.wealthAccordionList { display:grid; gap:8px; }
.wealthAccordion {
  overflow:hidden;
  border:1px solid #dbe5f1;
  border-radius:12px;
  background:#fff;
}
.wealthAccordion summary {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto 90px;
  align-items:center;
  gap:14px;
  padding:13px 15px;
  cursor:pointer;
  list-style:none;
  color:var(--navy);
  background:#edf4fc;
}
.wealthAccordion summary::-webkit-details-marker { display:none; }
.wealthAccordion summary::after {
  content:"⌄";
  grid-column:4;
  color:#64748b;
  font-size:1rem;
  font-weight:900;
  transition:transform .18s ease;
}
.wealthAccordion[open] summary::after { transform:rotate(180deg); }
.wealthAccordionTitle { font-size:.94rem; font-weight:850; }
.wealthAccordionValue { color:#0f172a; font-size:.94rem; font-weight:850; font-variant-numeric:tabular-nums; }
.wealthAccordionShare { color:#475569; font-size:.82rem; font-style:normal; font-weight:750; text-align:right; font-variant-numeric:tabular-nums; }
.wealthAccordionBody { border-top:1px solid #dbe5f1; }
.wealthAccordionRow {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto 90px;
  gap:14px;
  align-items:center;
  padding:11px 15px 11px 42px;
  border-top:1px solid #eef2f7;
}
.wealthAccordionRow:first-child { border-top:0; }
.wealthAccordionRow span { color:#334155; font-size:.88rem; font-weight:650; }
.wealthAccordionRow strong { color:#0f172a; font-size:.9rem; font-weight:780; font-variant-numeric:tabular-nums; }
.wealthAccordionRow em { color:#475569; font-size:.8rem; font-style:normal; font-weight:700; text-align:right; }
.wealthAccordionTotal {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto 90px;
  gap:14px;
  align-items:center;
  padding:13px 15px;
  border:2px solid #dbe5f1;
  border-radius:12px;
  background:#f8fafc;
}
.wealthAccordionTotal span,.wealthAccordionTotal strong { color:#0f172a; font-size:.94rem; font-weight:900; }
.wealthAccordionTotal em { color:#334155; font-size:.82rem; font-style:normal; font-weight:800; text-align:right; }
.wealthHistoryTable td.positive { color:#15803d !important; font-weight:850 !important; }
.wealthHistoryTable td.negative { color:#b91c1c !important; font-weight:850 !important; }
.wealthHistoryTable td.neutral { color:#64748b !important; }

/* Datenstand massiv kompakter: eine Summary-Zeile + flache Statuszeilen. */
.statusCompact .panelHeader { margin-bottom:7px; padding-bottom:6px; }
.statusSummaryBar {
  display:flex;
  align-items:center;
  gap:14px;
  flex-wrap:wrap;
  padding:7px 10px;
  border:1px solid #dbe5f1;
  border-radius:9px;
  background:#f8fafc;
  color:#475569;
  font-size:.72rem;
}
.statusSummaryBar b { color:#1e3a68; font-size:.68rem; text-transform:uppercase; letter-spacing:.035em; }
.statusSummaryState { margin-left:auto; font-weight:850; }
.statusSummaryState.isOk { color:#15803d; }
.statusSummaryState.isWarning { color:#b45309; }
.statusCompact .statusCards { grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; margin-top:7px; }
.statusCompact .statusCard { min-height:0; padding:7px 9px; border-radius:8px; box-shadow:none; }
.statusCompact .statusCard--warning { grid-column:span 2; }
.statusCardLine { display:grid; grid-template-columns:22px minmax(0,1fr) auto auto; align-items:center; gap:7px; }
.statusCardLine > strong { color:#1e3a68; font-size:.75rem; line-height:1.15; }
.statusCardLine time { margin:0 !important; color:#334155 !important; font-size:.7rem !important; font-weight:750 !important; white-space:nowrap; }
.statusCompact .statusState { padding:2px 5px; font-size:.56rem; white-space:nowrap; }
.statusCompact .statusIcon { font-size:.88rem; }
.statusCompact .statusErrorDetails { margin-top:6px; padding:6px 8px; font-size:.65rem; }

@media (max-width:900px) {
  .statusCompact .statusCards { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .statusCompact .statusCard--warning { grid-column:1/-1; }
}
@media (max-width:700px) {
  .financeHeroKpis--two,
  .financeHeroKpis--three { grid-template-columns:1fr; }
  .statusCompact .statusCards { grid-template-columns:1fr; }
  .statusSummaryState { margin-left:0; }
  .statusCardLine { grid-template-columns:22px minmax(0,1fr) auto; }
  .statusCardLine .statusState { grid-column:3; grid-row:1; }
  .statusCardLine time { grid-column:2/4; grid-row:2; }
  .wealthAccordion summary,
  .wealthAccordionRow,
  .wealthAccordionTotal { grid-template-columns:minmax(0,1fr) auto 72px; gap:9px; }
  .wealthAccordion summary::after { display:none; }
  .wealthAccordionRow { padding-left:24px; }
}
@media (max-width:620px) {
  .financeTable td,.trainingTable td { font-size:14px!important; }
  .financeTable th,.trainingTable th { font-size:13px!important; }
}


/* ==================== v6.36.4 · Depot-Einschätzung ==================== */












@media (max-width: 760px) {
  
}


/* ==================== v6.36.5 · Mobile Layout ==================== */
@media (max-width: 700px) {
  .financePositionsBlock {
    padding: 10px !important;
  }

  .financePositionsBlock .financeBlockHeader {
    margin-bottom: 8px;
    gap: 4px;
  }

  .financePositionsBlock .financeBlockHeader h3 {
    font-size: 1.22rem;
    line-height: 1.18;
  }

  .financePositionsBlock .financeBlockHeader p {
    margin-top: 2px;
    font-size: .79rem;
    line-height: 1.35;
  }

  .mobileFinanceTableWrap {
    margin-top: 8px;
    border-radius: 11px;
  }

  .portfolioHistoryPanel {
    padding-right: 10px !important;
    padding-left: 10px !important;
  }

  .portfolioChartToolbar {
    margin-bottom: 10px;
  }

  .portfolioChartCanvas {
    min-height: 210px;
  }

  .chartMethodNote {
    margin-top: 2px;
    font-size: .78rem;
    line-height: 1.4;
  }

  
}


/* ============================================================
   Training Plan v6.37.0 · PLAN Google Sheets + IST Strava
   ============================================================ */
.trainingPlanModalBackdrop{position:fixed;inset:0;z-index:10000;background:rgba(12,22,38,.54);display:grid;place-items:center;padding:18px}.trainingPlanModal{width:min(720px,100%);max-height:92vh;overflow:auto;background:var(--panel,#fff);color:var(--text,#111827);border-radius:18px;padding:19px;box-shadow:0 28px 80px rgba(0,0,0,.32)}.trainingPlanModalHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:15px}.trainingPlanModalHeader small{font-size:.7rem;letter-spacing:.1em;color:#315ca8;font-weight:800}.trainingPlanModalHeader h3{margin:2px 0 0}.trainingPlanModalHeader button{border:0;background:transparent;color:inherit;font-size:1.7rem;cursor:pointer}.trainingPlanForm{display:grid;grid-template-columns:1fr 1fr;gap:12px}.trainingPlanForm label{display:grid;gap:5px;font-size:.82rem;font-weight:650}.trainingPlanForm input,.trainingPlanForm select,.trainingPlanForm textarea{width:100%;box-sizing:border-box;border:1px solid rgba(107,114,128,.28);border-radius:10px;background:rgba(255,255,255,.65);color:inherit;padding:9px 10px;font:inherit}.trainingPlanFormWide{grid-column:1/-1}.trainingPlanModalActions{display:flex;align-items:center;gap:9px;margin-top:17px}.trainingPlanModalActions span{flex:1}.trainingPlanModalActions button{border:0;border-radius:10px;padding:9px 13px;cursor:pointer}.trainingPlanDeleteButton{background:#dc2626;color:#fff}.trainingPlanModalMessage{min-height:20px;margin-top:9px;font-size:.84rem;color:#b42318}
@media(max-width:900px){.trainingPlanKpis{grid-template-columns:repeat(2,minmax(0,1fr))}.trainingPlanRow{grid-template-columns:82px 86px minmax(0,1fr) 34px}.trainingPlanActual{grid-column:3;text-align:left}.trainingPlanEditButton{grid-column:4;grid-row:1 / span 2}.trainingPlanMain{grid-column:3}.trainingPlanSport{align-self:start}}
@media(max-width:620px){.trainingPlanForm{grid-template-columns:1fr}.trainingPlanFormWide{grid-column:auto}}


/* ============================================================
   TRAINING 2 · experimentelles Cockpit
   ============================================================ */
.trainingCockpitHero,
.trainingCockpitTopGrid,
.trainingCockpitRoadmapSection,
.trainingCockpitLowerGrid { margin-top: 20px; }

.trainingCockpitHero {
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:24px;
  padding:22px 24px;
  border:1px solid var(--line);
  border-radius:22px;
  background:linear-gradient(135deg, rgba(37,99,235,.08), rgba(255,255,255,.82) 52%, rgba(16,185,129,.05));
  box-shadow:0 12px 32px rgba(15,23,42,.06);
}
.trainingCockpitHeroCopy { max-width:820px; }
.trainingCockpitEyebrow { display:block; margin-bottom:7px; color:#315ea8; font-size:12px; font-weight:800; letter-spacing:.10em; text-transform:uppercase; }
.trainingCockpitHero h2,.trainingCockpitSectionHead h2 { margin:0; color:var(--text); }
.trainingCockpitHero h2 { font-size:clamp(24px,3vw,34px); line-height:1.05; }
.trainingCockpitHero p,.trainingCockpitSectionHead p { margin:8px 0 0; color:var(--muted); line-height:1.55; }
.trainingCockpitHeroActions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; justify-content:flex-end; }
.trainingCockpitSource { display:inline-flex; align-items:center; min-height:34px; padding:0 12px; border-radius:999px; font-size:13px; font-weight:750; white-space:nowrap; }
.trainingCockpitSource.isOk { background:#eaf8f0; color:#1f6c45; }
.trainingCockpitSource.isWarning { background:#fff4df; color:#9a5b00; }
.trainingCockpitAddButton { border:0; border-radius:11px; padding:10px 15px; background:#245da8; color:#fff; font:inherit; font-weight:800; cursor:pointer; box-shadow:0 7px 18px rgba(37,93,168,.22); }
.trainingCockpitWarning { margin-top:12px; padding:12px 15px; border-radius:12px; background:#fff4df; color:#924a10; border:1px solid rgba(217,119,6,.16); }

.trainingCockpitTopGrid { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(270px,.82fr) minmax(270px,.83fr); gap:14px; }
.trainingCockpitTodayCard,.trainingCockpitCoachCard,.trainingCockpitWeekCard,.trainingCockpitPanel {
  min-width:0;
  border:1px solid var(--line);
  border-radius:18px;
  background:var(--card, #fff);
  box-shadow:0 8px 24px rgba(15,23,42,.045);
}
.trainingCockpitTodayCard,.trainingCockpitCoachCard,.trainingCockpitWeekCard { padding:18px; }
.trainingCockpitCardHeader { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.trainingCockpitCardHeader h3 { margin:0; font-size:21px; }
.trainingCockpitTodayState,.trainingCockpitCoachSource { flex:none; display:inline-flex; align-items:center; min-height:28px; padding:0 9px; border-radius:999px; background:rgba(37,99,235,.08); color:#315ea8; font-size:12px; font-weight:800; }
.trainingCockpitTodayBody { display:grid; gap:9px; margin-top:14px; }
.trainingCockpitTodaySession { display:grid; grid-template-columns:42px 1fr 34px; gap:10px; align-items:flex-start; padding:12px; border-radius:13px; background:rgba(37,99,235,.045); border:1px solid rgba(37,99,235,.08); }
.trainingCockpitTodaySession.isDone { background:rgba(16,185,129,.07); border-color:rgba(16,185,129,.16); }
.trainingCockpitSessionIcon { display:grid; place-items:center; width:42px; height:42px; border-radius:12px; background:#fff; font-size:21px; box-shadow:inset 0 0 0 1px rgba(15,23,42,.07); }
.trainingCockpitSessionMain { min-width:0; }
.trainingCockpitSessionMain strong { display:block; font-size:16px; }
.trainingCockpitSessionMain span { display:block; margin-top:3px; color:var(--muted); font-size:13px; }
.trainingCockpitSessionMain p { margin:7px 0 0; color:#41556f; font-size:13px; line-height:1.4; }
.trainingCockpitSessionMain em { display:block; margin-top:7px; color:#16704a; font-size:12px; font-style:normal; font-weight:750; }
.trainingCockpitEditButton,.trainingCockpitDayFooter button { border:0; background:rgba(15,23,42,.06); border-radius:8px; cursor:pointer; min-width:30px; min-height:30px; color:var(--text); }
.trainingCockpitNoPlan { display:flex; align-items:center; gap:12px; min-height:92px; padding:13px; border-radius:13px; border:1px dashed rgba(100,116,139,.32); color:var(--muted); }
.trainingCockpitNoPlan > span { font-size:26px; }.trainingCockpitNoPlan strong{color:var(--text)}.trainingCockpitNoPlan p{margin:3px 0 0;font-size:13px}
.trainingCockpitNextHint { display:flex; justify-content:space-between; gap:12px; margin-top:12px; padding-top:11px; border-top:1px solid var(--line); font-size:13px; }.trainingCockpitNextHint span{color:var(--muted)}

.trainingCockpitCoachCard { background:linear-gradient(160deg, rgba(235,248,240,.9), rgba(255,255,255,.95)); }
.trainingCockpitCoachIcon { display:grid; place-items:center; width:52px; height:52px; margin:18px 0 12px; border-radius:16px; background:#fff; box-shadow:0 8px 22px rgba(15,23,42,.07); font-size:25px; }
.trainingCockpitCoachTitle { display:block; font-size:19px; line-height:1.25; }
.trainingCockpitCoachPrescription { display:inline-flex; margin-top:9px; padding:7px 10px; border-radius:10px; background:rgba(16,185,129,.1); color:#1d6b49; font-weight:750; font-size:13px; }
.trainingCockpitCoachCard p { margin:10px 0 0; color:#52665a; font-size:13px; line-height:1.5; }

.trainingCockpitWeekCard .trainingCockpitCardHeader b { color:#245da8; font-size:25px; }
.trainingCockpitWeekNumbers { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:22px; }
.trainingCockpitWeekNumbers div { min-width:0; }.trainingCockpitWeekNumbers span { display:block; color:var(--muted); font-size:11px; font-weight:800; letter-spacing:.06em; }.trainingCockpitWeekNumbers strong { display:block; margin-top:3px; font-size:18px; font-variant-numeric:tabular-nums; }
.trainingCockpitProgress { height:9px; margin-top:18px; overflow:hidden; border-radius:999px; background:rgba(100,116,139,.13); }.trainingCockpitProgress i { display:block; height:100%; border-radius:inherit; background:linear-gradient(90deg,#245da8,#42a5f5); }
.trainingCockpitWeekCompare { display:flex; justify-content:space-between; gap:10px; margin-top:10px; color:var(--muted); font-size:12px; }

.trainingCockpitRoadmapSection,.trainingCockpitPanel { padding:20px; border:1px solid var(--line); border-radius:20px; background:var(--card,#fff); box-shadow:0 8px 24px rgba(15,23,42,.035); }
.trainingCockpitSectionHead { display:flex; align-items:flex-end; justify-content:space-between; gap:18px; margin-bottom:14px; }.trainingCockpitSectionHead > div:first-child{max-width:780px}.trainingCockpitSectionHead h2{font-size:22px}.trainingCockpitRoadmapSummary{display:flex;align-items:baseline;gap:7px;color:var(--muted);white-space:nowrap}.trainingCockpitRoadmapSummary strong{color:var(--text);font-size:24px}.trainingCockpitRoadmapSummary span{font-size:13px}
.trainingCockpitCalendarGrid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:9px; }
.trainingCockpitDayCard { min-width:0; min-height:176px; border:1px solid rgba(148,163,184,.2); border-radius:14px; background:rgba(248,250,252,.75); overflow:hidden; }
.trainingCockpitDayCard.isToday { border-color:rgba(37,99,235,.42); box-shadow:0 0 0 2px rgba(37,99,235,.08); background:rgba(239,246,255,.8); }
.trainingCockpitDayCard.isEmpty { background:rgba(248,250,252,.46); }
.trainingCockpitDayHead { display:flex; align-items:center; justify-content:space-between; gap:5px; padding:9px 10px; border-bottom:1px solid rgba(148,163,184,.15); }.trainingCockpitDayHead span{font-size:12px;font-weight:800;color:#52657f}.trainingCockpitDayHead strong{font-size:12px;font-variant-numeric:tabular-nums}
.trainingCockpitDaySessions { display:grid; gap:6px; padding:7px; }
.trainingCockpitDaySession { padding:8px; border-radius:10px; background:#fff; border:1px solid rgba(148,163,184,.17); box-shadow:0 3px 10px rgba(15,23,42,.025); }.trainingCockpitDaySession.isDone{background:#effaf4;border-color:rgba(16,185,129,.2)}
.trainingCockpitDaySport { display:flex; align-items:center; gap:5px; color:#51627a; font-size:11px; font-weight:750; }.trainingCockpitDaySession > strong{display:block;margin-top:5px;font-size:12.5px;line-height:1.2}.trainingCockpitDaySession > small{display:block;margin-top:4px;color:var(--muted);font-size:10.5px;line-height:1.35}
.trainingCockpitDayFooter { display:flex; align-items:center; justify-content:space-between; gap:5px; margin-top:7px; }.trainingCockpitDayFooter em{font-size:10.5px;font-style:normal;color:#6b7280}.trainingCockpitDayFooter button{min-width:25px;min-height:25px;font-size:11px}
.trainingCockpitFreeDay { min-height:112px; display:grid; place-items:center; align-content:center; gap:4px; color:#9aa7b8; }.trainingCockpitFreeDay span{font-size:22px}.trainingCockpitFreeDay small{font-size:11px}

.trainingCockpitLowerGrid { display:grid; grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr); gap:14px; }
.trainingCockpitSectionHead--compact { align-items:flex-start; margin-bottom:17px; }.trainingCockpitSectionHead--compact > strong{font-size:19px}.trainingCockpitSectionHead--compact > span{font-size:12px;color:var(--muted)}
.trainingCockpitMixRows { display:grid; gap:12px; }.trainingCockpitMixRow{display:grid;grid-template-columns:115px 1fr 64px;align-items:center;gap:10px}.trainingCockpitMixRow>div:first-child{display:flex;align-items:center;gap:7px;font-size:13px}.trainingCockpitMixRow>div:first-child strong{font-size:13px}.trainingCockpitMixRow>b{text-align:right;font-size:13px;font-variant-numeric:tabular-nums}.trainingCockpitMixTrack{height:9px;border-radius:999px;background:rgba(100,116,139,.12);overflow:hidden}.trainingCockpitMixTrack i{display:block;height:100%;border-radius:inherit;background:#5d7fb5}.trainingCockpitMixTrack i.is-run{background:#5c9b74}.trainingCockpitMixTrack i.is-swim{background:#55a9c5}.trainingCockpitMixTrack i.is-support{background:#8f7ab6}.trainingCockpitMixFoot{margin-top:17px;padding-top:13px;border-top:1px solid var(--line);color:var(--muted);font-size:12.5px;line-height:1.45}
.trainingCockpitRecentList { display:grid; gap:7px; }.trainingCockpitRecentItem{display:grid;grid-template-columns:38px 1fr;gap:10px;align-items:center;padding:9px 10px;border-radius:11px;background:rgba(248,250,252,.8)}.trainingCockpitRecentIcon{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#fff;box-shadow:inset 0 0 0 1px rgba(15,23,42,.06)}.trainingCockpitRecentItem strong{display:block;font-size:13px}.trainingCockpitRecentItem span{display:block;margin-top:2px;color:var(--muted);font-size:11.5px}.trainingCockpitNoData{padding:18px;color:var(--muted)}

@media (max-width: 1180px) {
  .trainingCockpitTopGrid { grid-template-columns:1fr 1fr; }
  .trainingCockpitTodayCard { grid-column:1/-1; }
  .trainingCockpitCalendarGrid { grid-template-columns:repeat(4,minmax(0,1fr)); }
}
@media (max-width: 820px) {
  .trainingCockpitHero { padding:17px; flex-direction:column; }
  .trainingCockpitHeroActions { justify-content:flex-start; }
  .trainingCockpitTopGrid,.trainingCockpitLowerGrid { grid-template-columns:1fr; }
  .trainingCockpitTodayCard { grid-column:auto; }
  .trainingCockpitCalendarGrid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .trainingCockpitSectionHead { align-items:flex-start; flex-direction:column; }
}
@media (max-width: 520px) {
  .trainingCockpitRoadmapSection,.trainingCockpitPanel { padding:14px; }
  .trainingCockpitCalendarGrid { grid-template-columns:1fr; }
  .trainingCockpitDayCard { min-height:auto; }.trainingCockpitFreeDay{min-height:62px;grid-auto-flow:column;gap:8px}.trainingCockpitFreeDay span{font-size:18px}
  .trainingCockpitWeekNumbers { grid-template-columns:1fr 1fr 1fr; gap:5px; }.trainingCockpitWeekNumbers strong{font-size:15px}
  .trainingCockpitMixRow { grid-template-columns:96px 1fr 58px; }
  .trainingCockpitTodaySession { grid-template-columns:38px 1fr 30px; }.trainingCockpitSessionIcon{width:38px;height:38px}
}


/* ==========================================================
   Dashboard v6.38.1 - Finance/Training Feedback
   ========================================================== */
.portfolioChartStats strong > span.positive { color: var(--green) !important; }
.portfolioChartStats strong > span.negative { color: var(--red) !important; }
.portfolioChartStats strong > span.neutral { color: var(--text) !important; }

.trainingCockpitHeroActions { align-items:center; }
.trainingCockpitInfo { position:relative; display:inline-flex; }
.trainingCockpitInfoButton {
  width:32px;
  height:32px;
  display:grid;
  place-items:center;
  border:1px solid rgba(37,93,168,.2);
  border-radius:999px;
  background:#f2f6fc;
  color:#245da8;
  font:800 14px/1 inherit;
  cursor:help;
}
.trainingCockpitInfoPopover {
  position:absolute;
  z-index:20;
  top:calc(100% + 8px);
  right:0;
  width:min(340px,80vw);
  padding:11px 12px;
  border:1px solid var(--line);
  border-radius:11px;
  background:#fff;
  box-shadow:0 12px 30px rgba(15,23,42,.14);
  color:#334155;
  font-size:12.5px;
  line-height:1.45;
  opacity:0;
  visibility:hidden;
  transform:translateY(-4px);
  transition:.15s ease;
}
.trainingCockpitInfo:hover .trainingCockpitInfoPopover,
.trainingCockpitInfo:focus-within .trainingCockpitInfoPopover {
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}
.trainingCockpitSheetLink {
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:0 11px;
  border:1px solid rgba(37,93,168,.16);
  border-radius:10px;
  background:#f8fbff;
  color:#245da8;
  font-size:12.5px;
  font-weight:800;
  text-decoration:none;
}
.trainingCockpitSheetLink:hover { background:#eef5ff; }
.trainingCockpitSheetLink--compact { min-height:30px; font-size:12px; }

.trainingCockpitTopGrid--two {
  grid-template-columns:minmax(0,1.25fr) minmax(310px,.75fr);
}
.trainingCockpitCompletionBadge {
  display:inline-flex;
  align-items:center;
  min-height:30px;
  padding:0 10px;
  border-radius:999px;
  background:#eaf2ff;
  color:#245da8;
  font-size:12px;
  font-weight:850;
  white-space:nowrap;
}
.trainingCockpitWeekLead {
  display:grid;
  grid-template-columns:minmax(0,1.25fr) minmax(120px,.75fr);
  gap:10px;
  margin-top:18px;
}
.trainingCockpitWeekLead > div {
  padding:13px 14px;
  border:1px solid rgba(37,93,168,.11);
  border-radius:13px;
  background:linear-gradient(180deg,#f8fbff,#f3f7fd);
}
.trainingCockpitWeekLead span {
  display:block;
  color:#64748b;
  font-size:10.5px;
  font-weight:850;
  letter-spacing:.07em;
}
.trainingCockpitWeekLead strong {
  display:block;
  margin-top:5px;
  color:#173f7b;
  font-size:24px;
  line-height:1.1;
  font-variant-numeric:tabular-nums;
}
.trainingCockpitWeekLead strong small {
  color:#64748b;
  font-size:13px;
  font-weight:750;
}
.trainingCockpitProgress--large {
  height:12px;
  margin-top:14px;
  background:#e8edf5;
}
.trainingCockpitProgress--large i {
  background:linear-gradient(90deg,#245da8,#4aa3ff);
}
.trainingCockpitWeekCompare b { color:#334155; }
.trainingCockpitStatsPanel { margin-top:14px; }
.trainingCockpitStatsTableWrap { margin:0; }
.trainingCockpitStatsTable th,
.trainingCockpitStatsTable td { font-size:.82rem; }
.trainingCockpitStatsTable td strong { font-size:.86rem; }
.trainingCockpitStatsTable td span { color:#64748b; font-size:.72rem; font-weight:650; }
.trainingCockpitStatsTable tfoot td { background:#f4f8fd; }

.trainingCockpitRoadmapActions {
  display:flex;
  align-items:flex-end;
  justify-content:flex-end;
  flex-wrap:wrap;
  gap:10px;
}
.trainingCockpitMixRow {
  grid-template-columns:115px minmax(110px,1fr) 106px;
}
.trainingCockpitMixRow > b {
  white-space:nowrap;
}
.trainingCockpitMixTrack i {
  min-width:0;
}

@media (max-width:1180px) {
  .trainingCockpitTopGrid--two { grid-template-columns:1fr 1fr; }
}
@media (max-width:820px) {
  .trainingCockpitTopGrid--two { grid-template-columns:1fr; }
  .trainingCockpitRoadmapActions { justify-content:flex-start; }
  .trainingCockpitStatsTableWrap { overflow-x:auto; }
  .trainingCockpitStatsTable { min-width:660px; }
}
@media (max-width:520px) {
  .trainingCockpitWeekLead { grid-template-columns:1fr; }
  .trainingCockpitMixRow { grid-template-columns:92px minmax(70px,1fr) 96px; gap:7px; }
  .trainingCockpitMixRow > b { font-size:11.5px; }
  .trainingCockpitInfoPopover { right:auto; left:0; }
}

@media (max-width:1180px) {
  .trainingCockpitTopGrid--two .trainingCockpitTodayCard { grid-column:auto; }
}


/* ==========================================================
   Dashboard v6.38.2 · Training kompakter Inhalt & Reihenfolge
   ========================================================== */
.trainingCockpitHero--status {
  align-items:center;
  padding:18px 20px;
  gap:18px;
  background:linear-gradient(135deg, rgba(37,93,168,.075), rgba(255,255,255,.92) 58%, rgba(16,185,129,.045));
}
.trainingCockpitHeroCopy--status {
  flex:1 1 640px;
  max-width:none;
}
.trainingCockpitHero--status .trainingCockpitEyebrow {
  margin-bottom:9px;
}
.trainingCockpitStatusRow {
  display:flex;
  align-items:stretch;
  gap:9px;
}
.trainingCockpitStatusMetric {
  min-width:170px;
  padding:10px 13px;
  border:1px solid rgba(37,93,168,.10);
  border-radius:12px;
  background:rgba(248,251,255,.92);
}
.trainingCockpitStatusMetric span {
  display:block;
  color:#64748b;
  font-size:10.5px;
  font-weight:850;
  letter-spacing:.065em;
}
.trainingCockpitStatusMetric strong {
  display:block;
  margin-top:4px;
  color:#173f7b;
  font-size:21px;
  line-height:1.1;
  font-variant-numeric:tabular-nums;
}
.trainingCockpitStatusMetric strong small {
  color:#64748b;
  font-size:12px;
  font-weight:750;
}
.trainingCockpitHero--status .trainingCockpitCompletionBadge {
  align-self:center;
}
.trainingCockpitHero--status .trainingCockpitProgress {
  margin-top:10px;
  height:8px;
}
.trainingCockpitHero--status .trainingCockpitHeroActions {
  flex:0 0 auto;
  max-width:380px;
}

.trainingCockpitTopGrid--single {
  display:block;
  margin-top:14px;
}
.trainingCockpitTopGrid--single .trainingCockpitTodayCard {
  width:100%;
  box-sizing:border-box;
  padding:17px 18px;
}
.trainingCockpitEyebrow--today {
  margin:0;
  font-size:11.5px;
}
.trainingCockpitTodayBody {
  margin-top:11px;
}
.trainingCockpitTodaySession {
  padding:11px 12px;
}
.trainingCockpitSessionMain p {
  margin-top:5px;
}

.trainingCockpitStatsPanel {
  margin-top:14px;
  padding:17px 18px;
}
.trainingCockpitSectionHead--minimal {
  min-height:28px;
  align-items:center;
  margin-bottom:10px;
}
.trainingCockpitSectionHead--minimal .trainingCockpitEyebrow {
  margin:0;
}
.trainingCockpitSectionHead--minimal > strong {
  color:#334155;
  font-size:17px;
  font-variant-numeric:tabular-nums;
}
.trainingCockpitStatsTable td,
.trainingCockpitStatsTable th {
  padding-top:9px;
  padding-bottom:9px;
}
.trainingCockpitStatsTable td span {
  color:#52657f;
}

.trainingCockpitRoadmapSection {
  margin-top:14px;
  padding:17px 18px;
}
.trainingCockpitSectionHead--roadmap {
  align-items:center;
  margin-bottom:11px;
}
.trainingCockpitSectionHead--roadmap > .trainingCockpitEyebrow {
  margin:0;
}
.trainingCockpitRoadmapSummary span {
  color:#52657f;
  font-weight:750;
}
.trainingCockpitCalendarGrid {
  gap:8px;
}
.trainingCockpitDayCard {
  min-height:160px;
}

.trainingCockpitLowerGrid {
  margin-top:14px;
  gap:12px;
}
.trainingCockpitLowerGrid .trainingCockpitPanel {
  padding:17px 18px;
}
.trainingCockpitMixRows {
  gap:10px;
}
.trainingCockpitRecentList {
  gap:6px;
}
.trainingCockpitRecentItem {
  padding:8px 9px;
}
.trainingCockpitRecentItem span {
  color:#52657f;
}

@media (max-width: 900px) {
  .trainingCockpitHero--status {
    align-items:flex-start;
  }
  .trainingCockpitHero--status .trainingCockpitHeroActions {
    max-width:none;
  }
  .trainingCockpitStatusRow {
    flex-wrap:wrap;
  }
  .trainingCockpitStatusMetric {
    flex:1 1 180px;
  }
}

@media (max-width: 620px) {
  .trainingCockpitHero--status {
    padding:14px;
  }
  .trainingCockpitStatusRow {
    display:grid;
    grid-template-columns:1fr 1fr;
  }
  .trainingCockpitStatusMetric {
    min-width:0;
  }
  .trainingCockpitStatusMetric strong {
    font-size:18px;
  }
  .trainingCockpitHero--status .trainingCockpitCompletionBadge {
    grid-column:1 / -1;
    justify-self:start;
  }
  .trainingCockpitHero--status .trainingCockpitHeroActions {
    gap:7px;
  }
  .trainingCockpitTopGrid--single .trainingCockpitTodayCard,
  .trainingCockpitStatsPanel,
  .trainingCockpitRoadmapSection,
  .trainingCockpitLowerGrid .trainingCockpitPanel {
    padding:13px;
  }
  .trainingCockpitSectionHead--roadmap {
    align-items:flex-start;
    gap:8px;
  }
  .trainingCockpitRoadmapActions {
    width:100%;
    justify-content:space-between;
  }
}


/* ==========================================================
   Dashboard v6.38.3 · Training Wochenmix als Balkendiagramm
   ========================================================== */
.trainingCockpitMixRows {
  display:grid;
  gap:10px;
}
.trainingCockpitMixRow {
  display:grid;
  grid-template-columns:150px minmax(0,1fr);
  align-items:center;
  gap:16px;
}
.trainingCockpitMixLabel {
  display:flex;
  align-items:center;
  gap:9px;
  min-width:0;
}
.trainingCockpitMixLabel > span {
  flex:0 0 auto;
  font-size:17px;
  line-height:1;
}
.trainingCockpitMixLabel > strong {
  min-width:0;
  color:#172033;
  font-size:14px;
  line-height:1.2;
  white-space:nowrap;
}
.trainingCockpitMixPlot {
  display:flex;
  align-items:center;
  min-width:0;
  height:24px;
  gap:10px;
}
.trainingCockpitMixBar {
  display:block;
  flex:0 0 auto;
  height:16px;
  min-width:0;
  border-radius:2px;
  background:#48b99a;
}
.trainingCockpitMixBar.is-bike,
.trainingCockpitMixBar.is-run,
.trainingCockpitMixBar.is-swim,
.trainingCockpitMixBar.is-support {
  background:#48b99a;
}
.trainingCockpitMixPlot > b {
  flex:0 0 auto;
  margin-left:0;
  color:#172033;
  font-size:13.5px;
  font-weight:800;
  line-height:1;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}

/* Die alte volle Track-Fläche wird für den neuen Chart nicht mehr genutzt. */
.trainingCockpitMixTrack {
  display:none !important;
}

@media (max-width: 700px) {
  .trainingCockpitMixRow {
    grid-template-columns:104px minmax(0,1fr);
    gap:9px;
  }
  .trainingCockpitMixLabel {
    gap:6px;
  }
  .trainingCockpitMixLabel > span {
    font-size:15px;
  }
  .trainingCockpitMixLabel > strong {
    font-size:12.5px;
  }
  .trainingCockpitMixPlot {
    gap:7px;
    height:22px;
  }
  .trainingCockpitMixBar {
    height:14px;
  }
  .trainingCockpitMixPlot > b {
    font-size:11.5px;
  }
}

@media (max-width: 460px) {
  .trainingCockpitMixRow {
    grid-template-columns:92px minmax(0,1fr);
  }
  .trainingCockpitMixLabel > strong {
    font-size:11.8px;
  }
  .trainingCockpitMixPlot > b {
    font-size:10.8px;
  }
}


/* ==========================================================
   Dashboard v6.38.4 · Training Statusbalken grün/rot
   ========================================================== */
.trainingCockpitHero--status .trainingCockpitProgress {
  background: #f6c7c7; /* ausstehender Wochenanteil */
  border: 1px solid rgba(185, 28, 28, 0.10);
  box-shadow: inset 0 1px 2px rgba(127, 29, 29, 0.08);
}
.trainingCockpitHero--status .trainingCockpitProgress > i {
  background: linear-gradient(90deg, #22c55e 0%, #16a34a 100%); /* absolvierte Anteile */
  box-shadow: 0 1px 2px rgba(22, 163, 74, 0.22);
}


/* ==========================================================
   Dashboard v6.38.5 · Training Status + Wochenmix Fix
   ========================================================== */

/* STATUS: grün = absolviert, rot = noch ausstehend. */
.trainingCockpitHero--status .trainingCockpitProgress--split {
  position:relative;
  overflow:hidden;
  height:10px;
  border:0;
  border-radius:999px;
  background:
    linear-gradient(
      90deg,
      #22c55e 0%,
      #22c55e var(--completed),
      #efb0b0 var(--completed),
      #efb0b0 100%
    ) !important;
  box-shadow:inset 0 1px 2px rgba(15,23,42,.08);
}
.trainingCockpitHero--status .trainingCockpitProgress--split > i {
  display:none !important;
}

/* Die Status-Kachel etwas ruhiger/kompakter. */
.trainingCockpitHero--status {
  min-height:0;
}
.trainingCockpitHero--status .trainingCockpitHeroCopy--status {
  min-width:0;
}
.trainingCockpitHero--status .trainingCockpitProgress--large {
  width:100%;
}

/* WOCHENMIX: echtes horizontales Balkendiagramm ohne Track-Flächen. */
.trainingCockpitLowerGrid {
  align-items:start;
}
.trainingCockpitMixPanel {
  align-self:start;
  min-height:0 !important;
  height:auto !important;
}
.trainingCockpitMixRows {
  gap:11px;
}
.trainingCockpitMixRow {
  grid-template-columns:150px minmax(0,1fr);
  gap:16px;
}
.trainingCockpitMixPlot {
  display:grid;
  grid-template-columns:minmax(180px,1fr) 105px;
  align-items:center;
  gap:12px;
  width:100%;
  min-width:0;
  height:auto;
}
.trainingCockpitMixBarArea {
  position:relative;
  width:100%;
  height:18px;
  min-width:0;
}
.trainingCockpitMixBar {
  position:absolute;
  left:0;
  top:1px;
  display:block;
  height:16px;
  min-width:0;
  border-radius:1px;
  background:#45b995 !important;
}
.trainingCockpitMixPlot > b {
  text-align:right;
  margin:0;
  color:#172033;
  font-size:13.5px;
  font-weight:800;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
.trainingCockpitMixLabel > strong {
  color:#172033;
}

/* Screenreader-only helper. */
.srOnly {
  position:absolute !important;
  width:1px !important;
  height:1px !important;
  padding:0 !important;
  margin:-1px !important;
  overflow:hidden !important;
  clip:rect(0,0,0,0) !important;
  white-space:nowrap !important;
  border:0 !important;
}

@media (max-width:700px) {
  .trainingCockpitMixRow {
    grid-template-columns:108px minmax(0,1fr);
    gap:9px;
  }
  .trainingCockpitMixPlot {
    grid-template-columns:minmax(90px,1fr) 86px;
    gap:7px;
  }
  .trainingCockpitMixBarArea {
    height:15px;
  }
  .trainingCockpitMixBar {
    height:13px;
  }
  .trainingCockpitMixPlot > b {
    font-size:11.5px;
  }
}


/* ==========================================================
   Dashboard v6.38.6 · Training Status + Wochenmix robust
   ========================================================== */

/* ---------- STATUS-BALKEN ---------- */
.trainingCockpitHero--status .trainingCockpitProgress--split {
  width: 100%;
  height: 14px;
  margin-top: 14px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: transparent !important;
  box-shadow: none;
}
.trainingCockpitHero--status .trainingCockpitProgressSegments {
  display: flex;
  width: 100%;
  height: 100%;
  overflow: hidden;
  border-radius: 999px;
  background: #eef2f7;
  box-shadow:
    inset 0 0 0 1px rgba(148, 163, 184, 0.20),
    inset 0 1px 2px rgba(15, 23, 42, 0.08);
}
.trainingCockpitHero--status .trainingCockpitProgressDone,
.trainingCockpitHero--status .trainingCockpitProgressTodo {
  display: block;
  height: 100%;
  flex: 0 0 auto;
  min-width: 0;
}
.trainingCockpitHero--status .trainingCockpitProgressDone {
  background: linear-gradient(90deg, #22c55e 0%, #16a34a 100%);
}
.trainingCockpitHero--status .trainingCockpitProgressTodo {
  background: linear-gradient(90deg, #f3b2b2 0%, #e48a8a 100%);
}
.trainingCockpitHero--status .trainingCockpitStatusRow {
  align-items: center;
}

/* ---------- WOCHENMIX ---------- */
.trainingCockpitMixPanel {
  align-self: start;
  min-height: 0 !important;
  height: auto !important;
}
.trainingCockpitMixRows {
  display: grid;
  gap: 14px;
}
.trainingCockpitMixRow {
  display: grid;
  grid-template-columns: 190px minmax(260px, 1fr) 126px;
  grid-template-areas: "label bar value";
  align-items: center;
  gap: 18px;
}
.trainingCockpitMixLabel {
  grid-area: label;
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.trainingCockpitMixLabel > span {
  flex: 0 0 auto;
  font-size: 18px;
  line-height: 1;
}
.trainingCockpitMixLabel > strong {
  min-width: 0;
  color: #172033;
  font-size: 14px;
  font-weight: 800;
  line-height: 1.2;
  white-space: nowrap;
}
.trainingCockpitMixTrackWrap {
  grid-area: bar;
  width: 100%;
  min-width: 0;
}
.trainingCockpitMixTrack {
  position: relative;
  width: 100%;
  height: 18px;
  overflow: hidden;
  border-radius: 999px;
  background: #e7edf3;
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, 0.14);
}
.trainingCockpitMixBar {
  position: absolute;
  inset: 0 auto 0 0;
  display: block;
  height: 100%;
  min-width: 0;
  border-radius: inherit;
  background: linear-gradient(90deg, #4ec8a2 0%, #3db88f 100%) !important;
  box-shadow: 0 1px 2px rgba(61, 184, 143, 0.20);
}
.trainingCockpitMixValue {
  grid-area: value;
  justify-self: end;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 118px;
  justify-content: flex-end;
  padding: 7px 10px;
  border-radius: 999px;
  background: #f8fafc;
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, 0.16);
  font-variant-numeric: tabular-nums;
}
.trainingCockpitMixValue strong {
  color: #172033;
  font-size: 13.5px;
  font-weight: 800;
  line-height: 1;
}
.trainingCockpitMixValue span {
  color: #5e728d;
  font-size: 12.5px;
  font-weight: 800;
  line-height: 1;
}
.trainingCockpitSectionHead--minimal {
  margin-bottom: 14px;
}

/* Alte Zwischenzustände sicher neutralisieren */
.trainingCockpitMixPlot,
.trainingCockpitMixBarArea {
  display: initial;
}
.trainingCockpitMixPlot > b {
  display: none !important;
}

@media (max-width: 900px) {
  .trainingCockpitMixRow {
    grid-template-columns: 150px minmax(180px, 1fr) 110px;
    gap: 12px;
  }
}

@media (max-width: 700px) {
  .trainingCockpitMixRow {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "label value"
      "bar bar";
    gap: 8px 10px;
  }
  .trainingCockpitMixTrack {
    height: 16px;
  }
  .trainingCockpitMixValue {
    min-width: 0;
    padding: 6px 9px;
  }
  .trainingCockpitMixValue strong {
    font-size: 12.5px;
  }
  .trainingCockpitMixValue span {
    font-size: 11.5px;
  }
}

@media (max-width: 520px) {
  .trainingCockpitHero--status .trainingCockpitProgress--split {
    height: 12px;
  }
  .trainingCockpitMixLabel > strong {
    font-size: 13px;
  }
}


/* ==========================================================
   Dashboard v6.39.0 · Training konsolidiert & Wochenmix repariert
   ========================================================== */
.trainingWeekStatusBar {
  display:flex;
  width:100%;
  height:14px;
  margin-top:14px;
  overflow:hidden;
  border-radius:999px;
  background:#e7edf3;
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, 0.18), inset 0 1px 2px rgba(15, 23, 42, 0.08);
}
.trainingWeekStatusDone,
.trainingWeekStatusTodo {
  display:block;
  height:100%;
  flex:0 0 auto;
  min-width:0;
}
.trainingWeekStatusDone { background:linear-gradient(90deg, #22c55e 0%, #16a34a 100%); }
.trainingWeekStatusTodo { background:linear-gradient(90deg, #f4b3b3 0%, #e58a8a 100%); }
.trainingWeekMixRows { display:grid; gap:16px; }
.trainingWeekMixRow {
  display:grid;
  grid-template-columns: 180px minmax(220px, 1fr) 130px;
  align-items:center;
  gap:20px;
}
.trainingWeekMixLabel { display:flex; align-items:center; gap:12px; min-width:0; }
.trainingWeekMixLabel > span { flex:0 0 auto; font-size:22px; line-height:1; }
.trainingWeekMixLabel > strong { color:#172033; font-size:15px; font-weight:850; line-height:1.15; white-space:nowrap; }
.trainingWeekMixBarWrap { width:100%; min-width:0; }
.trainingWeekMixBarTrack {
  position:relative;
  width:100%;
  height:18px;
  border-radius:999px;
  background:#e7edf3;
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, 0.16);
  overflow:hidden;
}
.trainingWeekMixBarFill {
  position:absolute;
  left:0; top:0; display:block; height:100%; border-radius:999px;
}
.trainingWeekMixBarFill.is-bike { background:linear-gradient(90deg,#4f73b7 0%,#6285c5 100%); }
.trainingWeekMixBarFill.is-run { background:linear-gradient(90deg,#5a9c71 0%,#66ab7d 100%); }
.trainingWeekMixBarFill.is-swim { background:linear-gradient(90deg,#53a8c6 0%,#61b3cf 100%); }
.trainingWeekMixBarFill.is-support { background:linear-gradient(90deg,#8d79bb 0%,#9c89c7 100%); }
.trainingWeekMixMetric {
  justify-self:end; display:flex; align-items:center; justify-content:flex-end; gap:10px;
  min-width:126px; padding:8px 14px; border-radius:999px; background:#f7f9fc;
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, 0.20); font-variant-numeric: tabular-nums;
}
.trainingWeekMixMetric strong { color:#172033; font-size:15px; font-weight:850; line-height:1; }
.trainingWeekMixMetric span { color:#5f7390; font-size:14px; font-weight:850; line-height:1; }
@media (max-width: 980px) {
  .trainingWeekMixRow { grid-template-columns: 150px minmax(140px, 1fr) 116px; gap:14px; }
}
@media (max-width: 700px) {
  .trainingWeekStatusBar { height:12px; }
  .trainingWeekMixRow {
    grid-template-columns: 1fr auto;
    grid-template-areas: "label metric" "bar bar";
    gap:10px 12px;
  }
  .trainingWeekMixLabel { grid-area:label; }
  .trainingWeekMixBarWrap { grid-area:bar; }
  .trainingWeekMixMetric { grid-area:metric; min-width:0; padding:7px 10px; }
  .trainingWeekMixBarTrack { height:16px; }
  .trainingWeekMixLabel > span { font-size:18px; }
  .trainingWeekMixLabel > strong { font-size:14px; }
  .trainingWeekMixMetric strong { font-size:13px; }
  .trainingWeekMixMetric span { font-size:12px; }
}


/* ==========================================================
   Dashboard v6.39.1 · Training final + Multi-User Fix
   ========================================================== */
[data-tab-panel="training"] .trainingWeekStatusBar {
  display:flex !important;
  width:100% !important;
  height:14px !important;
  margin-top:14px !important;
  padding:0 !important;
  overflow:hidden !important;
  border:0 !important;
  border-radius:999px !important;
  background:#edf1f5 !important;
  box-shadow:inset 0 0 0 1px rgba(148,163,184,.18) !important;
}
[data-tab-panel="training"] .trainingWeekStatusDone,
[data-tab-panel="training"] .trainingWeekStatusTodo {
  display:block !important;
  flex:0 0 auto !important;
  height:100% !important;
  min-width:0 !important;
}

[data-tab-panel="training"] .trainingWeekMixRows {
  display:grid !important;
  gap:15px !important;
}
[data-tab-panel="training"] .trainingWeekMixRow {
  display:grid !important;
  grid-template-columns:180px minmax(260px,1fr) 128px !important;
  align-items:center !important;
  gap:18px !important;
}
[data-tab-panel="training"] .trainingWeekMixLabel {
  display:flex !important;
  align-items:center !important;
  gap:10px !important;
  min-width:0 !important;
}
[data-tab-panel="training"] .trainingWeekMixLabel > span {
  flex:0 0 auto !important;
  font-size:20px !important;
  line-height:1 !important;
}
[data-tab-panel="training"] .trainingWeekMixLabel > strong {
  color:#172033 !important;
  font-size:14px !important;
  font-weight:850 !important;
  line-height:1.15 !important;
  white-space:nowrap !important;
}
[data-tab-panel="training"] .trainingWeekMixBarWrap {
  display:block !important;
  width:100% !important;
  min-width:0 !important;
}
[data-tab-panel="training"] .trainingWeekMixBarTrack {
  display:block !important;
  width:100% !important;
  height:18px !important;
  padding:0 !important;
  overflow:hidden !important;
  border-radius:3px !important;
  background:#e8eef3 !important;
  box-shadow:inset 0 0 0 1px rgba(148,163,184,.15) !important;
}
[data-tab-panel="training"] .trainingWeekMixBarFill {
  display:block !important;
  height:100% !important;
  min-width:0 !important;
  border-radius:3px !important;
}
[data-tab-panel="training"] .trainingWeekMixMetric {
  justify-self:end !important;
  display:flex !important;
  align-items:center !important;
  justify-content:flex-end !important;
  gap:9px !important;
  min-width:118px !important;
  padding:7px 11px !important;
  border-radius:999px !important;
  background:#f8fafc !important;
  box-shadow:inset 0 0 0 1px rgba(148,163,184,.20) !important;
  font-variant-numeric:tabular-nums !important;
}
[data-tab-panel="training"] .trainingWeekMixMetric strong { color:#172033 !important; font-size:13.5px !important; font-weight:850 !important; }
[data-tab-panel="training"] .trainingWeekMixMetric span { color:#5f7390 !important; font-size:12.5px !important; font-weight:850 !important; }

@media (max-width:700px) {
  [data-tab-panel="training"] .trainingWeekStatusBar { height:12px !important; }
  [data-tab-panel="training"] .trainingWeekMixRow {
    grid-template-columns:1fr auto !important;
    grid-template-areas:"label metric" "bar bar" !important;
    gap:8px 10px !important;
  }
  [data-tab-panel="training"] .trainingWeekMixLabel { grid-area:label !important; }
  [data-tab-panel="training"] .trainingWeekMixBarWrap { grid-area:bar !important; }
  [data-tab-panel="training"] .trainingWeekMixMetric { grid-area:metric !important; min-width:0 !important; }
  [data-tab-panel="training"] .trainingWeekMixBarTrack { height:15px !important; }
}


/* ==========================================================
   Dashboard v6.39.3 · CSP-sichere Trainingsbalken
   ========================================================== */
[data-tab-panel="training"] .trainingWeekStatusSvg {
  display:block;
  width:100%;
  height:14px;
  margin-top:14px;
  overflow:visible;
}
[data-tab-panel="training"] .trainingWeekMixSvg {
  display:block;
  width:100%;
  height:18px;
  overflow:visible;
}
[data-tab-panel="training"] .trainingWeekMixBarWrap {
  width:100% !important;
  min-width:0 !important;
}
/* Alte DIV-Fills werden nicht mehr gerendert; SVG-Attribute umgehen style-src CSP. */
[data-tab-panel="training"] .trainingWeekStatusBar,
[data-tab-panel="training"] .trainingWeekMixBarTrack {
  display:none !important;
}
@media (max-width:700px) {
  [data-tab-panel="training"] .trainingWeekStatusSvg { height:12px; }
  [data-tab-panel="training"] .trainingWeekMixSvg { height:16px; }
}


/* ==========================================================
   Dashboard v6.39.4 · UI polish desktop + mobile
   ========================================================== */

/* ---------- Training status: radial progress instead of beam ---------- */
[data-tab-panel="training"] .trainingCockpitHero--status {
  min-height:0 !important;
  align-items:center;
}
[data-tab-panel="training"] .trainingCockpitHeroCopy--status {
  flex:1 1 auto !important;
  min-width:0;
  max-width:none;
}
[data-tab-panel="training"] .trainingCockpitStatusRow {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
}
[data-tab-panel="training"] .trainingWeekProgressCard {
  display:flex;
  align-items:center;
  gap:11px;
  min-width:205px;
  padding:8px 12px 8px 8px;
  border:1px solid rgba(37,93,168,.12);
  border-radius:15px;
  background:rgba(255,255,255,.74);
  box-shadow:0 5px 16px rgba(15,23,42,.045);
}
[data-tab-panel="training"] .trainingWeekProgressRing {
  position:relative;
  display:grid;
  place-items:center;
  width:58px;
  height:58px;
  flex:0 0 58px;
}
[data-tab-panel="training"] .trainingWeekProgressRing svg {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
}
[data-tab-panel="training"] .trainingWeekProgressRing > strong {
  position:relative;
  z-index:1;
  color:#173f7b;
  font-size:14px;
  font-weight:900;
  font-variant-numeric:tabular-nums;
}
[data-tab-panel="training"] .trainingWeekProgressCopy {
  display:grid;
  gap:2px;
  min-width:0;
}
[data-tab-panel="training"] .trainingWeekProgressCopy > span {
  color:#64748b;
  font-size:10px;
  font-weight:850;
  letter-spacing:.065em;
  text-transform:uppercase;
}
[data-tab-panel="training"] .trainingWeekProgressCopy > strong {
  color:#166534;
  font-size:13px;
  font-weight:850;
  line-height:1.15;
}
[data-tab-panel="training"] .trainingWeekProgressCopy > small {
  color:#b45353;
  font-size:11.5px;
  font-weight:750;
}
[data-tab-panel="training"] .trainingWeekStatusSvg { display:none !important; }

/* ---------- Home: Letzte 5 Aktivitäten ---------- */
.overviewActivityList {
  display:grid;
  gap:8px;
}
.overviewActivityItem {
  display:grid;
  grid-template-columns:44px minmax(150px,230px) minmax(0,1fr);
  align-items:center;
  gap:12px;
  padding:10px 11px;
  border:1px solid #e1e8f0;
  border-radius:12px;
  background:#fff;
}
.overviewActivityIcon {
  display:grid;
  place-items:center;
  width:40px;
  height:40px;
  border-radius:11px;
  background:#f4f8fd;
  box-shadow:inset 0 0 0 1px rgba(37,93,168,.08);
  font-size:19px;
}
.overviewActivityMain {
  min-width:0;
}
.overviewActivityMain strong {
  display:block;
  overflow:hidden;
  color:#172033;
  font-size:.86rem;
  font-weight:820;
  line-height:1.2;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.overviewActivityMain span {
  display:block;
  margin-top:3px;
  color:#64748b;
  font-size:.72rem;
  font-weight:650;
}
.overviewActivityMetrics {
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  gap:5px;
  min-width:0;
}
.overviewActivityMetrics > span {
  display:inline-flex;
  align-items:center;
  min-height:25px;
  padding:3px 8px;
  border:1px solid #e1e8f0;
  border-radius:999px;
  color:#334155;
  background:#f8fafc;
  font-size:.69rem;
  font-weight:720;
  white-space:nowrap;
}

/* ---------- News: more readable ---------- */
.newsList--single {
  max-width:1180px;
  gap:10px;
}
.newsList--single .newsRow {
  grid-template-columns:34px minmax(0,1fr);
  min-height:66px;
  gap:11px;
  padding:13px 15px;
  border-radius:11px;
}
.newsList--single .newsIndex {
  width:30px;
  height:30px;
  border-radius:8px;
  font-size:.75rem;
}
.newsList--single .newsRow strong {
  font-size:.94rem;
  line-height:1.32;
}
.newsList--single .newsRow div > span {
  margin-top:5px;
  font-size:.75rem;
  font-weight:600;
}

/* ---------- Mobile Training: remove status whitespace ---------- */
@media (max-width:820px) {
  [data-tab-panel="training"] .trainingCockpitHero--status {
    display:block !important;
    padding:14px !important;
  }
  [data-tab-panel="training"] .trainingCockpitHeroCopy--status {
    flex:none !important;
    width:100%;
  }
  [data-tab-panel="training"] .trainingCockpitHeroActions {
    margin-top:12px;
    max-width:none !important;
  }
}
@media (max-width:620px) {
  [data-tab-panel="training"] .trainingCockpitStatusRow {
    display:grid !important;
    grid-template-columns:1fr 1fr;
    gap:8px;
  }
  [data-tab-panel="training"] .trainingCockpitStatusMetric {
    min-width:0;
    padding:10px;
  }
  [data-tab-panel="training"] .trainingWeekProgressCard {
    grid-column:1 / -1;
    width:100%;
    min-width:0;
    box-sizing:border-box;
    padding:8px 10px;
  }
  [data-tab-panel="training"] .trainingWeekProgressRing {
    width:50px;
    height:50px;
    flex-basis:50px;
  }
  [data-tab-panel="training"] .trainingCockpitHeroActions {
    display:grid;
    grid-template-columns:auto minmax(0,1fr) auto;
    align-items:center;
    gap:7px;
  }
  [data-tab-panel="training"] .trainingCockpitAddButton {
    grid-column:1 / -1;
    width:100%;
  }
}

/* ---------- Mobile Training statistics: card grid, never horizontally scroll ---------- */
@media (max-width:700px) {
  [data-tab-panel="training"] .trainingCockpitStatsTableWrap {
    overflow:visible !important;
    margin:0 !important;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable {
    display:block;
    width:100% !important;
    min-width:0 !important;
    border:0;
    background:transparent;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable thead {
    display:none;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable tbody,
  [data-tab-panel="training"] .trainingCockpitStatsTable tfoot {
    display:grid;
    gap:9px;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable tfoot {
    margin-top:10px;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable tr {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    overflow:hidden;
    border:1px solid #dbe5f1;
    border-radius:12px;
    background:#fff;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable td {
    display:flex;
    min-width:0;
    flex-direction:column;
    align-items:flex-start !important;
    justify-content:center;
    padding:9px 10px !important;
    border:0 !important;
    border-top:1px solid #edf1f5 !important;
    color:#334155;
    text-align:left !important;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable td:nth-child(even) {
    border-right:1px solid #edf1f5 !important;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable td:first-child {
    grid-column:1 / -1;
    padding:9px 10px !important;
    border-top:0 !important;
    background:#f2f6fb;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable td:not(:first-child)::before {
    content:attr(data-label);
    margin-bottom:3px;
    color:#64748b;
    font-size:.64rem;
    font-weight:800;
    letter-spacing:.035em;
    text-transform:uppercase;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable td strong {
    font-size:.87rem !important;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable td span {
    margin-top:2px;
    color:#64748b;
    font-size:.69rem !important;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable tfoot td {
    background:#f7fafc;
  }
  [data-tab-panel="training"] .trainingCockpitStatsTable tfoot td:first-child {
    background:#eaf1fb;
  }
}

/* ---------- Mobile Profits: larger, darker yearly table ---------- */
@media (max-width:700px) {
  .mobileProfitYearlyTable th {
    padding:9px 3px !important;
    color:#475569;
    font-size:.68rem !important;
    font-weight:850;
  }
  .mobileProfitYearlyTable td {
    padding:11px 3px !important;
    color:#475569;
    font-size:.76rem !important;
    line-height:1.2;
  }
  .mobileProfitYearlyTable td strong {
    color:#172033;
    font-size:.82rem !important;
    font-weight:850;
  }
  .mobileProfitYearlyTable td span {
    margin-top:3px;
    color:#64748b;
    font-size:.66rem !important;
    line-height:1.15;
  }
  .mobileProfitYearlyTable th:nth-child(1) { width:17%; }
  .mobileProfitYearlyTable th:nth-child(2) { width:21%; }
  .mobileProfitYearlyTable th:nth-child(3) { width:28%; }
  .mobileProfitYearlyTable th:nth-child(4) { width:34%; }
}

/* Mobile Home activities */
@media (max-width:700px) {
  .overviewActivityItem {
    grid-template-columns:38px minmax(0,1fr);
    gap:9px;
    padding:9px;
  }
  .overviewActivityIcon {
    width:36px;
    height:36px;
    font-size:17px;
  }
  .overviewActivityMain strong {
    font-size:.82rem;
    white-space:normal;
  }
  .overviewActivityMetrics {
    grid-column:2;
    gap:4px;
  }
  .overviewActivityMetrics > span {
    min-height:23px;
    padding:2px 7px;
    font-size:.65rem;
  }
  .newsList--single .newsRow {
    grid-template-columns:31px minmax(0,1fr);
    min-height:62px;
    padding:11px 10px;
  }
  .newsList--single .newsRow strong {
    font-size:.91rem;
  }
  .newsList--single .newsRow div > span {
    font-size:.73rem;
  }
}


/* v6.40.0 · Dokumentation als System- und KI-Kontext */
.documentationActions { display:flex; align-items:center; justify-content:flex-end; gap:9px; flex-wrap:wrap; }
.documentationDownload--secondary { background:#f7faff; color:#334e7d; }
@media (max-width:700px) {
  .documentationActions { width:100%; display:grid; grid-template-columns:1fr; }
  .documentationDownload { width:100%; justify-content:center; box-sizing:border-box; }
}


/* ============================================================
   Dashboard v6.40 – Home: vier kompakte Tageskacheln
   ============================================================ */
.dailyBriefPanel {
  overflow: hidden;
}
.dailyBriefGrid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 13px;
}
.dailyBriefTile {
  min-width: 0;
  padding: 13px;
  border: 1px solid #dbeafe;
  border-radius: 11px;
  background: #fff;
}
.dailyBriefTile > span {
  color: #1d4ed8;
  font-size: .68rem;
  font-weight: 850;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.dailyBriefTile h3 {
  margin: 8px 0 0;
  color: var(--text);
  font-size: .95rem;
  line-height: 1.35;
}
.dailyBriefTile > strong {
  display: block;
  margin-top: 6px;
  color: #1e3a5f;
  font-size: .74rem;
}
.dailyBriefTile p {
  margin: 6px 0 0;
  font-size: .78rem;
  line-height: 1.45;
}
.dailyBriefTile--ideas {
  border-color: #bbf7d0;
  background: #f7fff9;
}
.dailyBriefTile--ideas > span { color: #15803d; }
.dailyBriefTile--portfolio {
  border-color: #ddd6fe;
  background: #faf9ff;
}
.dailyBriefTile--portfolio > span { color: #6d28d9; }
.dailyBriefTile--market {
  background: #fbfdff;
}
.dailyBriefList {
  display: grid;
  gap: 8px;
  margin: 9px 0 0;
  padding: 0;
  list-style: none;
}
.dailyBriefList li {
  display: grid;
  gap: 2px;
  padding-top: 7px;
  border-top: 1px solid #e8eef6;
}
.dailyBriefList li:first-child {
  padding-top: 0;
  border-top: 0;
}
.dailyBriefList strong {
  color: var(--text);
  font-size: .78rem;
  line-height: 1.35;
}
.dailyBriefList span {
  color: var(--muted);
  font-size: .69rem;
  line-height: 1.4;
}
.overviewDateItem--birthday {
  border-left: 3px solid #f59e0b;
  padding-left: 8px;
}
.financeMoversPanel .movementColumns {
  margin-top: 8px;
}
@media (max-width: 900px) {
  .dailyBriefGrid { grid-template-columns: 1fr; gap: 7px; margin-top: 8px; }
  .dailyBriefTile { padding: 10px; border-radius: 9px; }
}


/* ==========================================================
   Dashboard v6.40.2 · Finance placement, compact Training status, Profits typography
   ========================================================== */

/* Größte Bewegungen: bewusst zwischen Depot und Depotentwicklung,
   auf großen Displays als kompakter Mittelblock statt Vollbreite. */
[data-tab-panel="finance"] .financeMoversPanel {
  width: min(100%, 1180px);
  margin-left: auto;
  margin-right: auto;
}
[data-tab-panel="finance"] .financeMoversPanel .financeBlockHeader {
  margin-bottom: 6px;
}
[data-tab-panel="finance"] .financeMoversPanel .movementColumns {
  gap: 28px;
}

/* Training STATUS kompakter und besser ausgenutzt. */
[data-tab-panel="training"] .trainingCockpitHero--status {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center !important;
  gap: 18px !important;
  padding: 14px 18px !important;
}
[data-tab-panel="training"] .trainingCockpitHero--status .trainingCockpitEyebrow {
  margin-bottom: 7px !important;
}
[data-tab-panel="training"] .trainingCockpitStatusRow {
  display: grid !important;
  grid-template-columns: minmax(158px, 184px) minmax(142px, 166px) minmax(220px, 252px);
  align-items: stretch !important;
  gap: 8px !important;
  width: max-content;
  max-width: 100%;
}
[data-tab-panel="training"] .trainingCockpitStatusMetric {
  min-width: 0 !important;
  min-height: 66px;
  box-sizing: border-box;
  padding: 9px 12px !important;
  border-radius: 12px !important;
  background: rgba(255,255,255,.82) !important;
  box-shadow: 0 3px 10px rgba(15,23,42,.035);
}
[data-tab-panel="training"] .trainingCockpitStatusMetric strong {
  margin-top: 5px !important;
  font-size: 20px !important;
}
[data-tab-panel="training"] .trainingWeekProgressCard {
  min-width: 0 !important;
  padding: 6px 10px 6px 7px !important;
  border-radius: 12px !important;
  box-shadow: 0 3px 10px rgba(15,23,42,.035) !important;
}
[data-tab-panel="training"] .trainingWeekProgressRing {
  width: 50px !important;
  height: 50px !important;
  flex-basis: 50px !important;
}
[data-tab-panel="training"] .trainingWeekProgressCopy > span {
  font-size: 10px !important;
}
[data-tab-panel="training"] .trainingWeekProgressCopy > strong,
[data-tab-panel="training"] .trainingWeekProgressCopy > small {
  line-height: 1.25;
}
[data-tab-panel="training"] .trainingCockpitHero--status .trainingCockpitHeroActions {
  align-self: center;
  margin: 0 !important;
  max-width: none !important;
  flex-wrap: nowrap;
  gap: 8px;
}

/* Profits: etwas größere Leseschrift, ohne die Tabellen unnötig aufzublähen. */
@media (min-width: 761px) {
  [data-tab-panel="profits"] .profitsYearlyTable th,
  [data-tab-panel="profits"] .profitsYearlyTable td {
    font-size: 1.035rem;
  }
  [data-tab-panel="profits"] .profitsDetailTable td {
    font-size: .965rem;
  }
}

@media (max-width: 1180px) {
  [data-tab-panel="training"] .trainingCockpitHero--status {
    display: block !important;
  }
  [data-tab-panel="training"] .trainingCockpitHero--status .trainingCockpitHeroActions {
    margin-top: 11px !important;
    flex-wrap: wrap;
  }
}
@media (max-width: 700px) {
  [data-tab-panel="finance"] .financeMoversPanel {
    width: 100%;
  }
  [data-tab-panel="training"] .trainingCockpitStatusRow {
    width: 100%;
    grid-template-columns: 1fr 1fr;
  }
  [data-tab-panel="training"] .trainingWeekProgressCard {
    grid-column: 1 / -1;
  }
}


/* ============================================================
   Dashboard v6.40.3 · Datenstand einspaltig
   ============================================================ */
.statusCompact .statusCards {
  display:grid;
  grid-template-columns:minmax(0,1fr) !important;
  gap:7px;
  margin-top:8px;
}
.statusCompact .statusCard,
.statusCompact .statusCard--warning {
  grid-column:auto !important;
  min-height:0;
  padding:9px 11px;
  border-radius:9px;
}
.statusCompact .statusCardLine {
  grid-template-columns:24px minmax(0,1fr) auto auto;
  gap:9px;
}
.statusCompact .statusCardLine > strong {
  font-size:.78rem;
}
.statusCompact .statusErrorDetails {
  margin:7px 0 0 33px;
}
@media (max-width:700px) {
  .statusCompact .statusCardLine {
    grid-template-columns:22px minmax(0,1fr) auto;
  }
  .statusCompact .statusCardLine .statusState { grid-column:3; grid-row:1; }
  .statusCompact .statusCardLine time { grid-column:2/4; grid-row:2; }
  .statusCompact .statusErrorDetails { margin-left:29px; }
}


/* ============================================================
   Dashboard v6.41.0 · Training Status, Tagesperformance, Fast Boot
   ============================================================ */
[data-tab-panel="training"] .trainingStatusPanel {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:18px;
  margin:0 0 16px;
  padding:13px 16px;
  border:1px solid #dbe5f2;
  border-radius:18px;
  background:linear-gradient(135deg,#f8fbff 0%,#ffffff 58%,#f4fbf8 100%);
  box-shadow:0 8px 24px rgba(35,67,115,.05);
}
[data-tab-panel="training"] .trainingStatusMain {
  display:grid;
  grid-template-columns:minmax(230px,1.35fr) repeat(3,minmax(118px,.62fr));
  align-items:stretch;
  gap:8px;
  min-width:0;
}
[data-tab-panel="training"] .trainingStatusProgress,
[data-tab-panel="training"] .trainingStatusMetric {
  min-width:0;
  min-height:68px;
  box-sizing:border-box;
  border:1px solid #e4ebf4;
  border-radius:13px;
  background:rgba(255,255,255,.88);
}
[data-tab-panel="training"] .trainingStatusProgress {
  display:flex;
  align-items:center;
  gap:11px;
  padding:7px 12px 7px 8px;
}
[data-tab-panel="training"] .trainingStatusProgressRing {
  position:relative;
  display:grid;
  place-items:center;
  width:52px;
  height:52px;
  flex:0 0 52px;
}
[data-tab-panel="training"] .trainingStatusProgressRing svg { position:absolute; inset:0; width:100%; height:100%; }
[data-tab-panel="training"] .trainingStatusProgressRing strong {
  position:relative;
  z-index:1;
  color:#173f7b;
  font-size:14px;
  font-weight:900;
  font-variant-numeric:tabular-nums;
}
[data-tab-panel="training"] .trainingStatusProgressCopy { display:grid; gap:1px; min-width:0; }
[data-tab-panel="training"] .trainingStatusProgressCopy span,
[data-tab-panel="training"] .trainingStatusMetric span {
  color:#64748b;
  font-size:10px;
  font-weight:850;
  letter-spacing:.075em;
  text-transform:uppercase;
}
[data-tab-panel="training"] .trainingStatusProgressCopy strong {
  overflow:hidden;
  color:#183f77;
  font-size:16px;
  font-weight:900;
  line-height:1.2;
  text-overflow:ellipsis;
  white-space:nowrap;
}
[data-tab-panel="training"] .trainingStatusProgressCopy small,
[data-tab-panel="training"] .trainingStatusMetric small {
  color:#7b8798;
  font-size:10.5px;
  font-weight:650;
}
[data-tab-panel="training"] .trainingStatusMetric {
  display:grid;
  align-content:center;
  gap:2px;
  padding:9px 12px;
}
[data-tab-panel="training"] .trainingStatusMetric strong {
  color:#173f7b;
  font-size:19px;
  font-weight:900;
  line-height:1.1;
  font-variant-numeric:tabular-nums;
}
[data-tab-panel="training"] .trainingStatusMetric--open strong { color:#b45353; }
[data-tab-panel="training"] .trainingStatusActions {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex-wrap:nowrap;
}
@media (max-width:1180px) {
  [data-tab-panel="training"] .trainingStatusPanel { grid-template-columns:1fr; gap:10px; }
  [data-tab-panel="training"] .trainingStatusActions { justify-content:flex-start; flex-wrap:wrap; }
}
@media (max-width:760px) {
  [data-tab-panel="training"] .trainingStatusPanel { padding:11px; border-radius:14px; }
  [data-tab-panel="training"] .trainingStatusMain { grid-template-columns:1fr 1fr 1fr; }
  [data-tab-panel="training"] .trainingStatusProgress { grid-column:1 / -1; }
  [data-tab-panel="training"] .trainingStatusMetric { min-height:58px; padding:8px 9px; }
  [data-tab-panel="training"] .trainingStatusMetric strong { font-size:16px; }
  [data-tab-panel="training"] .trainingStatusActions { display:grid; grid-template-columns:auto minmax(0,1fr) auto; }
  [data-tab-panel="training"] .trainingCockpitAddButton { grid-column:1 / -1; width:100%; }
}
@media (max-width:460px) {
  [data-tab-panel="training"] .trainingStatusMain { grid-template-columns:1fr 1fr; }
  [data-tab-panel="training"] .trainingStatusMetric:nth-of-type(2) { grid-column:1; }
  [data-tab-panel="training"] .trainingStatusMetric--open { grid-column:1 / -1; }
}


/* v6.43.1 – non-blocking refresh feedback */
.dashboardToasts{position:fixed;right:18px;bottom:18px;z-index:5000;display:grid;gap:10px;max-width:min(440px,calc(100vw - 28px));pointer-events:none}
.dashboardToast{pointer-events:auto;padding:12px 15px;border-radius:12px;background:#fff;border:1px solid #d9e2ef;box-shadow:0 12px 32px rgba(19,42,82,.18);font-weight:650;line-height:1.4;color:#17346d;animation:toastIn .18s ease-out}
.dashboardToast.is-error{border-color:#efb8b8;background:#fff7f7;color:#a51d1d}
.dashboardToast.is-warning{border-color:#f0d28b;background:#fffaf0;color:#8a5a00}
.dashboardToast.is-success{border-color:#b5dfc1;background:#f5fff7;color:#176b32}
.dashboardToast.isLeaving{opacity:0;transform:translateY(6px);transition:opacity .2s ease,transform .2s ease}
@keyframes toastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:640px){.dashboardToasts{left:14px;right:14px;bottom:14px;max-width:none}}


/* ============================================================
   Dashboard v6.44.0 – Mobile UI polish / Safari-safe layouts
   ============================================================ */
.trainingStatsMobile,
.wealthHistoryMobile { display:none; }

@media (max-width:700px) {
  /* Header + navigation: less vertical space, active tab centered by JS. */
  .mobileHeader { padding:9px 10px 7px; border-radius:12px; }
  .mobileHeaderTop { gap:7px; }
  .mobileBrand strong { font-size:1.02rem; }
  .mobileBrand span { margin-top:2px; font-size:.66rem; }
  .mobileHeaderActions { gap:5px; }
  .mobileHeaderButton { width:30px; height:30px; border-radius:8px; }
  .mobileUserChip.userMenuTrigger { height:30px; max-width:116px; padding:0 8px; }
  .mobileHeaderStatus { margin-top:4px; }
  .mobileWarning,.mobileStatusOk { min-height:20px; padding:2px 7px; font-size:.62rem; }
  .tabBar {
    padding:4px 8px;
    gap:3px;
    scroll-padding-inline:45%;
    scroll-snap-type:x proximity;
  }
  .tabButton { min-height:34px; padding:0 10px; scroll-snap-align:center; }

  /* Profits: dedicated card rows instead of Safari table rows. */
  .mobileProfitYearlyCards { border:0; background:transparent; overflow:visible; }
  .mobileProfitYearRows { display:grid; gap:7px; }
  .mobileProfitYearRow {
    overflow:hidden;
    border:1px solid #dbe4ef;
    border-radius:11px;
    background:#fff;
  }
  .mobileProfitYearLead {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    padding:8px 10px;
    background:#f4f7fb;
  }
  .mobileProfitYearLead strong { color:#172033; font-size:.92rem; }
  .mobileProfitYearLead span { color:#64748b; font-size:.68rem; font-weight:700; }
  .mobileProfitYearMetrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); }
  .mobileProfitYearMetrics > div { min-width:0; padding:8px 9px; border-left:1px solid #edf1f5; }
  .mobileProfitYearMetrics > div:first-child { border-left:0; }
  .mobileProfitYearMetrics span { display:block; color:#8391a7; font-size:.59rem; font-weight:800; text-transform:uppercase; letter-spacing:.03em; }
  .mobileProfitYearMetrics strong { display:block; margin-top:3px; color:#25344b; font-size:.75rem; white-space:nowrap; }
  .mobileProfitYearTotal { display:grid; grid-template-columns:1fr; gap:3px; margin-top:8px; padding:9px 10px; border:1px solid #cad6e5; border-radius:10px; background:#edf3f9; font-size:.72rem; }
  .mobileProfitYearTotal > strong { color:#172033; font-size:.82rem; }
  .mobileProfitYearTotal > span { color:#53657e; }

  /* Jobs: denser cards, salary never forced onto separate awkward lines. */
  .jobList { gap:8px; }
  .jobRow { gap:8px; min-height:0; padding:11px 12px; border-radius:11px; }
  .jobRowSource { display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
  .jobRowSource strong,.jobRowSource span { font-size:.62rem; }
  .jobRowSource span { margin-top:0; }
  .jobRowMain h3 { font-size:.9rem; line-height:1.28; }
  .jobRowMain span { margin-top:4px; font-size:.72rem; }
  .jobRowSalary { display:flex; align-items:center; justify-content:space-between; gap:10px; }
  .jobRowSalary strong { min-width:0; color:#17346d; font-size:.86rem; white-space:normal; }
  .jobRowSalary span { flex:0 0 auto; margin-top:0; font-size:.66rem; }

  /* Finance history: compact accordion cards; current state expanded, older states collapsed. */
  .wealthHistoryDesktop { display:none !important; }
  .wealthHistoryMobile { display:grid; gap:7px; }
  .wealthHistoryMobileCard { overflow:hidden; border:1px solid #dbe4ef; border-radius:11px; background:#fff; }
  .wealthHistoryMobileCard.isCurrent { border-color:#86efac; background:#fbfffc; }
  .wealthHistoryMobileCard > summary {
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    gap:10px;
    align-items:center;
    padding:10px 11px;
    cursor:pointer;
    list-style:none;
  }
  .wealthHistoryMobileCard > summary::-webkit-details-marker { display:none; }
  .wealthHistoryMobileDate { display:flex; align-items:center; gap:7px; min-width:0; }
  .wealthHistoryMobileDate > span { display:none; }
  .wealthHistoryMobileDate > strong { color:#27364e; font-size:.9rem; }
  .wealthHistoryMobileDate > em { padding:2px 6px; border-radius:999px; color:#15803d; background:#dcfce7; font-size:.57rem; font-style:normal; font-weight:850; text-transform:uppercase; }
  .wealthHistoryMobileTotal { display:flex; align-items:flex-end; flex-direction:column; }
  .wealthHistoryMobileTotal > strong { color:#172033; font-size:.9rem; }
  .wealthHistoryMobileTotal > span { margin-top:2px; font-size:.67rem; font-weight:800; }
  .wealthHistoryMobileGrid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); border-top:1px solid #edf1f5; }
  .wealthHistoryMobileGrid > div { padding:8px 10px; border-top:1px solid #f0f3f7; border-left:1px solid #f0f3f7; }
  .wealthHistoryMobileGrid > div:nth-child(-n+2) { border-top:0; }
  .wealthHistoryMobileGrid > div:nth-child(odd) { border-left:0; }
  .wealthHistoryMobileGrid span { display:block; color:#8391a7; font-size:.6rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
  .wealthHistoryMobileGrid strong { display:block; margin-top:3px; color:#43536b; font-size:.76rem; text-align:right; }

  /* Training statistics: explicit div cards, not table display mutations (iOS Safari-safe). */
  .trainingStatsDesktop { display:none !important; }
  .trainingStatsMobile { display:grid; gap:8px; }
  .trainingMobileStatCard { overflow:hidden; border:1px solid #dbe5f1; border-radius:11px; background:#fff; }
  .trainingMobileStatCard--total { border-color:#bdd0e8; background:#f7faff; }
  .trainingMobileStatSport { padding:8px 10px; background:#f2f6fb; color:#25344b; font-size:.8rem; }
  .trainingMobileStatCard--total .trainingMobileStatSport { background:#eaf1fb; }
  .trainingMobileStatGrid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
  .trainingMobileStatMetric { min-width:0; padding:8px 10px; border-top:1px solid #edf1f5; border-left:1px solid #edf1f5; }
  .trainingMobileStatMetric:nth-child(odd) { border-left:0; }
  .trainingMobileStatMetric span { display:block; color:#8391a7; font-size:.59rem; font-weight:800; text-transform:uppercase; letter-spacing:.03em; }
  .trainingMobileStatMetric strong { display:block; margin-top:3px; color:#25344b; font-size:.82rem; }
  .trainingMobileStatMetric small { display:block; margin-top:1px; min-height:12px; color:#64748b; font-size:.62rem; font-weight:700; }

  /* Documentation: links and code stay inside the viewport. */
  .documentationContent { padding:16px 11px 26px; line-height:1.52; }
  .documentationContent h2 { margin-top:24px; font-size:1.22rem; }
  .documentationContent h3 { margin-top:20px; font-size:1.05rem; }
  .documentationContent p,.documentationContent li { font-size:.9rem; }
  .documentationContent a { overflow-wrap:anywhere; word-break:break-word; }
  .documentationContent code { white-space:normal; overflow-wrap:anywhere; word-break:break-word; }
  .documentationTableWrap { border-radius:10px; }
}
.userMenuPanel a[role="menuitem"]{display:flex;align-items:center;gap:.65rem;width:100%;box-sizing:border-box;padding:.7rem .8rem;border-radius:.6rem;color:inherit;text-decoration:none}.userMenuPanel a[role="menuitem"]:hover{background:rgba(23,52,109,.08)}

/* ============================================================
   Julian Platform v1.0.8 – einheitliches Menü und klarer Datenstand
   ============================================================ */
.userMenuPanel button,
.userMenuPanel form button,
.userMenuPanel a[role="menuitem"] {
  min-height: 42px;
  gap: 10px;
  padding: 9px 10px;
  color: #26354d;
  font-family: inherit;
  font-size: .88rem;
  font-weight: 700;
  line-height: 1.2;
  text-align: left;
}
.userMenuPanel a[role="menuitem"] > span:first-child {
  display: grid;
  width: 22px;
  flex: 0 0 22px;
  place-items: center;
  font-size: 1rem;
}
.userMenuPanel .userMenuSubAction {
  padding-left: 10px;
  color: #26354d;
  font-size: .88rem;
}
.statusSummaryGrid {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 7px;
  margin-top: 7px;
}
.statusSummaryGrid article {
  display: grid;
  align-content: start;
  min-width: 0;
  border: 1px solid #dbe5f1;
  border-radius: 10px;
  background: #f8fafc;
  padding: 9px 11px;
}
.statusSummaryGrid article > span {
  color: #718096;
  font-size: .61rem;
  font-weight: 850;
  letter-spacing: .045em;
  text-transform: uppercase;
}
.statusSummaryGrid article > strong {
  margin-top: 3px;
  color: #1e3a68;
  font-size: .78rem;
  line-height: 1.25;
}
.statusSummaryGrid article > small {
  margin-top: 3px;
  color: #64748b;
  font-size: .62rem;
  line-height: 1.3;
}
.statusSummaryGrid .statusSummaryResult.isOk { border-color:#bbebcf; background:#f1fbf5; }
.statusSummaryGrid .statusSummaryResult.isOk > strong { color:#15803d; }
.statusSummaryGrid .statusSummaryResult.isWarning { border-color:#f2d49a; background:#fffaf0; }
.statusSummaryGrid .statusSummaryResult.isWarning > strong { color:#b45309; }
.statusCardLine > strong { overflow-wrap:anywhere; }

@media (max-width: 900px) {
  .statusSummaryGrid { grid-template-columns: 1fr; }
}


/* ============================================================
   Julian Platform v1.0.6 – Depot/Investments split + mobile tables
   ============================================================ */
.investmentFlow{display:grid;gap:18px;margin-top:14px}
.investmentSection{min-width:0;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fff}
.investmentCardGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.investmentIdeaCard,.marketMovementCard{min-width:0;padding:12px 13px;border:1px solid #dbe5f1;border-radius:11px;background:#f8fbff}
.investmentIdeaCard>strong,.marketMovementCard>strong{display:block;margin-top:5px;color:var(--navy);font-size:.88rem;line-height:1.3}
.investmentIdeaCard p,.marketMovementCard p{margin:5px 0 0;color:var(--muted);font-size:.76rem;line-height:1.45}
.investmentRecommendationList,.investmentMarketList{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.investmentRecommendationList .recommendationCard{grid-template-columns:10px minmax(0,1fr);gap:9px;min-width:0}
.portfolioAssessmentCard .portfolioAssessmentDot{width:8px;height:8px;margin-top:5px;border-radius:50%;background:#64748b}
.portfolioAssessmentCard--buy .portfolioAssessmentDot{background:#16a34a}
.portfolioAssessmentCard--sell .portfolioAssessmentDot{background:#dc2626}
.portfolioAssessmentCard--check .portfolioAssessmentDot{background:#d97706}
.portfolioAssessmentCard--hold .portfolioAssessmentDot{background:#2563eb}
.portfolioAssessmentAction{font-size:.72rem;font-weight:800;color:#53657e}
.investmentEmpty{padding:14px;border:1px dashed #cbd5e1;border-radius:10px;color:var(--muted);background:#f8fafc;font-size:.8rem}

@media(max-width:1100px){
  .investmentCardGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){
  .mobileFinanceTable{table-layout:fixed!important}
  .mobileFinanceTable .mobileFinancePosition{width:34%!important}
  .mobileFinanceTable .mobileFinanceValue{width:20%!important}
  .mobileFinanceTable .mobileFinanceCurrent,.mobileFinanceTable .mobileFinanceTotal{width:23%!important}
  .mobileFinanceTable th,.mobileFinanceTable td{padding:8px 3px!important;vertical-align:middle}
  .mobileFinanceTable th{font-size:.56rem!important;letter-spacing:.02em}
  .mobileFinanceTable td{font-size:.64rem!important}
  .mobileFinanceTable td:first-child,.mobileFinanceTable th:first-child{padding-left:7px!important}
  .mobileFinanceTable td:last-child,.mobileFinanceTable th:last-child{padding-right:7px!important}
  .mobileFinanceTable .mobilePositionCell strong{overflow:hidden;font-size:.69rem!important;line-height:1.12;text-overflow:ellipsis;white-space:nowrap}
  .mobileFinanceTable .mobilePositionCell span{display:block!important;margin-top:2px;color:#8391a7;font-size:.54rem!important}
  .mobileFinanceValueCell strong{font-size:.65rem!important;white-space:nowrap}
  .mobileFinanceTable td.positive strong,.mobileFinanceTable td.negative strong,.mobileFinanceTable td.neutral strong{font-size:.68rem!important;white-space:nowrap}
  .mobileFinanceTable td.positive span,.mobileFinanceTable td.negative span,.mobileFinanceTable td.neutral span{display:block;margin-top:2px;font-size:.54rem!important;white-space:nowrap}
  .investmentFlow{gap:10px;margin-top:8px}
  .investmentSection{padding:10px;border-radius:11px}
  .investmentCardGrid,.investmentRecommendationList,.investmentMarketList{grid-template-columns:1fr;gap:7px}
  .investmentIdeaCard,.marketMovementCard,.investmentRecommendationList .recommendationCard{padding:10px;border-radius:10px}
  .investmentSection .financeBlockHeader{gap:6px;margin-bottom:8px}
  .investmentSection .financeBlockHeader p{font-size:.68rem}
}
@media(max-width:390px){
  .mobileFinanceTable .mobileFinancePosition{width:31%!important}
  .mobileFinanceTable .mobileFinanceValue{width:21%!important}
  .mobileFinanceTable .mobileFinanceCurrent,.mobileFinanceTable .mobileFinanceTotal{width:24%!important}
  .mobileFinanceTable th{font-size:.52rem!important}
  .mobileFinanceTable td{padding-right:2px!important;padding-left:2px!important}
  .mobileFinanceTable .mobilePositionCell strong{font-size:.64rem!important}
  .mobileFinanceValueCell strong,.mobileFinanceTable td.positive strong,.mobileFinanceTable td.negative strong,.mobileFinanceTable td.neutral strong{font-size:.62rem!important}
}

/* ============================================================
   Julian Platform v1.0.7 – Mobile Report Tabellen
   ============================================================ */
@media (max-width:700px) {
  /* Gemeinsames Muster wie im Daily Report: KPIs oben, kompakte Tabelle darunter. */
  .mobileTrainingReport,
  .mobileProfitReport {
    width:100%;
    margin-top:10px;
    border:0;
    border-radius:0;
    background:transparent;
    overflow:visible;
  }
  .mobileReportKpiGrid {
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:7px;
    margin-bottom:9px;
  }
  .mobileReportKpi {
    min-width:0;
    min-height:74px;
    padding:10px 11px;
    border:1px solid #d7e1ee;
    border-radius:11px;
    background:#f8fafc;
  }
  .mobileReportKpi > span {
    display:block;
    color:#7c8ba1;
    font-size:.61rem;
    font-weight:850;
    letter-spacing:.045em;
    text-transform:uppercase;
  }
  .mobileReportKpi > strong {
    display:block;
    margin-top:5px;
    color:#26364f;
    font-size:.98rem;
    font-weight:850;
    line-height:1.08;
    white-space:nowrap;
  }
  .mobileReportKpi > small {
    display:block;
    min-height:12px;
    margin-top:3px;
    color:#718198;
    font-size:.62rem;
    font-weight:700;
  }
  .mobileReportTableWrap {
    overflow:hidden;
    width:100%;
    border:1px solid #d7e1ee;
    border-radius:10px;
    background:#fff;
  }
  .mobileReportTable {
    width:100%;
    table-layout:fixed;
    border-collapse:collapse;
  }
  .mobileReportTable th {
    padding:8px 5px;
    background:#e9eef4;
    color:#5f6f86;
    font-size:.58rem;
    font-weight:850;
    letter-spacing:.02em;
    line-height:1.05;
    text-align:right;
  }
  .mobileReportTable th:first-child { text-align:left; padding-left:9px; }
  .mobileReportTable td {
    padding:8px 5px;
    border-top:1px solid #e3e8ef;
    color:#26344a;
    font-size:.66rem;
    line-height:1.12;
    text-align:right;
    vertical-align:middle;
    white-space:nowrap;
  }
  .mobileReportTable td:first-child { padding-left:9px; text-align:left; white-space:normal; }
  .mobileReportTable td strong { display:block; color:inherit; font-size:.7rem; font-weight:820; line-height:1.12; }
  .mobileReportTable td span { display:block; margin-top:2px; color:#7e8da2; font-size:.55rem; font-weight:700; line-height:1.05; }
  .mobileReportTable .mobileReportDash { margin:0; color:#8996a8; font-size:.72rem; }
  .mobileReportTable tbody tr:nth-child(even) { background:#fafbfd; }
  .mobileReportTable tfoot td { border-top:2px solid #cbd5e1; background:#eef2f6; font-weight:820; }

  .mobileTrainingStatsTable th:nth-child(1) { width:29%; }
  .mobileTrainingStatsTable th:nth-child(2) { width:23%; }
  .mobileTrainingStatsTable th:nth-child(3) { width:25%; }
  .mobileTrainingStatsTable th:nth-child(4) { width:23%; }
  .mobileTrainingStatsTable td:first-child strong { white-space:normal; }

  .mobileProfitKpiGrid { margin-bottom:9px; }
  .mobileProfitYearlyTable th:nth-child(1) { width:24%; }
  .mobileProfitYearlyTable th:nth-child(2) { width:23%; }
  .mobileProfitYearlyTable th:nth-child(3) { width:26%; }
  .mobileProfitYearlyTable th:nth-child(4) { width:27%; }
  .mobileProfitYearlyTable td,
  .mobileProfitYearlyTable th { text-align:right; }
  .mobileProfitYearlyTable td:first-child,
  .mobileProfitYearlyTable th:first-child { text-align:left; }

  .mobileProfitDetailWrap { margin-top:10px; }
  .mobileProfitDetailTable th:nth-child(1) { width:20%; }
  .mobileProfitDetailTable th:nth-child(2) { width:19%; }
  .mobileProfitDetailTable th:nth-child(3) { width:39%; }
  .mobileProfitDetailTable th:nth-child(4) { width:22%; }
  .mobileProfitDetailTable .mobileProfitPosition strong { white-space:normal; overflow-wrap:anywhere; }
  .mobileProfitDetailTable .profitTypeBadge { font-size:.52rem; padding:3px 4px; }
}

@media (max-width:390px) {
  .mobileReportKpi { min-height:68px; padding:9px; }
  .mobileReportKpi > strong { font-size:.9rem; }
  .mobileReportTable th { padding-right:3px; padding-left:3px; font-size:.53rem; }
  .mobileReportTable td { padding-right:3px; padding-left:3px; font-size:.62rem; }
  .mobileReportTable th:first-child,.mobileReportTable td:first-child { padding-left:7px; }
  .mobileReportTable td strong { font-size:.66rem; }
  .mobileReportTable td span { font-size:.51rem; }
}

/* ============================================================
   Dashboard v1.0.11 – mobile Jobs ohne horizontalen Overflow
   ============================================================ */
@media (max-width:700px) {
  [data-tab-panel="jobs"] {
    min-width:0;
    overflow:hidden;
  }

  [data-tab-panel="jobs"] .jobList {
    width:100%;
    min-width:0;
    overflow:hidden;
  }

  [data-tab-panel="jobs"] .jobRow {
    display:flex !important;
    width:100%;
    max-width:100%;
    min-width:0;
    box-sizing:border-box;
    flex-direction:column;
    align-items:stretch;
    gap:8px;
    overflow:hidden;
  }

  [data-tab-panel="jobs"] .jobRowSource,
  [data-tab-panel="jobs"] .jobRowMain,
  [data-tab-panel="jobs"] .jobRowSalary {
    width:100%;
    min-width:0;
    max-width:100%;
    box-sizing:border-box;
  }

  [data-tab-panel="jobs"] .jobRowMain h3 {
    max-width:100%;
    margin:0;
    overflow-wrap:anywhere;
    word-break:normal;
    white-space:normal;
  }

  [data-tab-panel="jobs"] .jobRowSalary {
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    align-items:end;
    gap:10px;
    text-align:left;
  }

  [data-tab-panel="jobs"] .jobRowSalary strong,
  [data-tab-panel="jobs"] .jobRowSalary span {
    min-width:0;
    overflow-wrap:anywhere;
  }

  [data-tab-panel="jobs"] .jobRowSalary span {
    text-align:right;
    white-space:nowrap;
  }
}


/* ============================================================
   Dashboard v1.0.22 – Jobs & Investments lesbarer und ruhiger
   ============================================================ */
.jobSummaryStrip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 12px}
.jobSummaryStrip>div{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:11px 12px;border:1px solid #e2e8f0;border-radius:12px;background:#fff}
.jobSummaryStrip span{color:#64748b;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.jobSummaryStrip strong{color:#0f172a;font-size:1rem}
.jobCountNote{margin:8px 2px 12px;color:#475569;font-size:.72rem;line-height:1.45}
.jobList--cards{grid-template-columns:1fr;gap:10px}
.jobList--cards .jobCardCompact{display:grid;grid-template-columns:minmax(0,1fr) auto;min-height:0;align-items:start;gap:14px;padding:15px 16px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;box-shadow:none;text-decoration:none}
.jobCardTopline{display:flex;align-items:center;justify-content:flex-start;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.jobSourceBadge,.jobSalaryBadge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;font-size:.64rem;font-weight:800;line-height:1.2}
.jobSourceBadge{color:#334155;background:#f1f5f9;text-transform:uppercase;letter-spacing:.035em}
.jobSalaryBadge{color:#0f172a;background:#f8fafc;border:1px solid #dbe3ec}
.jobCardBody{min-width:0;flex:1}
.jobCardBody h3{margin:0;color:#0f172a;font-size:1rem;line-height:1.35;overflow-wrap:anywhere}
.jobCompany{display:block;margin-top:6px;color:#334155;font-size:.82rem;font-weight:700}
.jobMetaLine{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px;color:#475569;font-size:.74rem;line-height:1.35}
.jobTeaser{margin:10px 0 0;color:#64748b;font-size:.75rem;line-height:1.5}
.jobCardFooter{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding-top:0;border-top:0;color:#475569;font-size:.7rem}
.jobCardFooter strong{display:inline-flex;align-items:center;padding:8px 11px;border:1px solid #dbe3ec;border-radius:999px;color:#17346d;font-size:.72rem}

.investmentFlow--marketFirst{gap:16px}
.investmentSection{padding:16px;border:1px solid #e2e8f0;border-radius:14px;background:#fff}
.investmentSection .financeBlockHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:12px}
.investmentSection .financeBlockHeader span{color:#54657d;font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.investmentSection .financeBlockHeader h3{margin-top:4px;color:#0f172a;font-size:1.18rem;line-height:1.25}
.investmentSection .financeBlockHeader p{max-width:520px;color:#475569;font-size:.82rem;line-height:1.5}
.financeBriefingBlock{margin:0}
.financeBriefingBox{padding:16px 18px;border:1px solid #e2e8f0;border-radius:14px;background:#fff;box-shadow:none}
.financeBriefingBox>strong{display:block;color:#0f172a;font-size:1rem}
.financeBriefingBox small{color:#64748b;font-size:.78rem;font-weight:700}
.marketBriefingList{margin:10px 0 0;padding-left:18px;color:#334155}
.marketBriefingList li{margin:0 0 7px;line-height:1.55}
.investmentCardGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.investmentSignalGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.investmentIdeaCard,.marketMovementCard,.investmentSignalCard{min-width:0;min-height:0;padding:13px 14px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;text-decoration:none;box-shadow:none}
.investmentIdeaCard>strong,.marketMovementCard>strong,.investmentSignalCard>strong{display:block;margin-top:6px;color:#0f172a;font-size:.95rem;line-height:1.4}
.investmentIdeaCard p,.marketMovementCard p{margin:7px 0 0;color:#475569;font-size:.8rem;line-height:1.55}
.investmentTypeBadge,.investmentSignalBadge{display:inline-flex;align-items:center;padding:4px 7px;border-radius:999px;background:#f1f5f9;color:#334155;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.investmentSignalMeta{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;color:#64748b;font-size:.7rem;line-height:1.4}
.investmentSignalOpen{margin-top:10px;padding-top:0;color:#17346d;font-size:.72rem;font-weight:800}
a.investmentSignalCard:hover{border-color:#cbd5e1;background:#fff;transform:none}
.investmentSection--portfolioMini{padding:16px;background:#fff}
.financeBlockHeader--compact{margin-bottom:10px}
.investmentPortfolioMini{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.investmentPortfolioMini .recommendationCard{min-height:0;padding:11px 12px;border:1px solid #e2e8f0;box-shadow:none}
.portfolioAssessmentAction{font-size:.74rem;color:#475569}
.investmentSourceNote{margin:2px 2px 0;color:#475569;font-size:.74rem;line-height:1.5}
.investmentEmpty{padding:14px;border:1px dashed #cbd5e1;border-radius:12px;color:#64748b;background:#f8fafc;font-size:.82rem;line-height:1.5}

@media (max-width:980px){
  .investmentCardGrid,.investmentSignalGrid,.investmentPortfolioMini{grid-template-columns:1fr}
}
@media (max-width:700px){
  .jobSummaryStrip{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .jobSummaryStrip>div{padding:9px 10px}
  .jobList--cards .jobCardCompact{grid-template-columns:1fr;padding:12px 13px;gap:10px}
  .jobCardBody h3{font-size:.92rem}
  .jobCardFooter{justify-content:flex-start}
  .investmentSection{padding:12px;border-radius:12px}
  .investmentSection .financeBlockHeader{display:block}
  .investmentSection .financeBlockHeader p{margin-top:8px;font-size:.76rem}
  .investmentCardGrid,.investmentSignalGrid,.investmentPortfolioMini{grid-template-columns:1fr}
}

/* v1.0.25 – Depot-Zeitraumwert vollständig nach Performance einfärben */
.portfolioChartStats strong.positive { color: var(--green) !important; }
.portfolioChartStats strong.negative { color: var(--red) !important; }
.portfolioChartStats strong.neutral { color: var(--text) !important; }

/* ============================================================
   Dashboard v1.0.27 – kompakte Jobs & neues Market-Radar
   ============================================================ */
.jobOverviewLine{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding:2px 0 8px;color:#475569;font-size:.78rem}
.jobOverviewLine strong{color:#0f172a;font-size:.95rem}
.jobOverviewLine span{position:relative;padding-left:12px}
.jobOverviewLine span::before{content:"";position:absolute;left:0;top:50%;width:4px;height:4px;border-radius:50%;background:#94a3b8;transform:translateY(-50%)}
.jobCountMethod{margin:0 0 12px;color:#64748b;font-size:.72rem;line-height:1.45}
.jobListV3{display:flex;flex-direction:column;border-top:1px solid #e2e8f0}
.jobListItemV3{display:grid;grid-template-columns:minmax(0,1fr) 170px 92px;align-items:center;gap:18px;padding:15px 4px;border-bottom:1px solid #e2e8f0;color:inherit;text-decoration:none;background:transparent}
a.jobListItemV3:hover{background:#f8fafc}
.jobListMain{min-width:0}
.jobListMain h3{margin:0;color:#0f172a;font-size:.98rem;line-height:1.35;overflow-wrap:anywhere}
.jobListMain>strong{display:block;margin-top:4px;color:#334155;font-size:.78rem;font-weight:700}
.jobListMeta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:8px;color:#64748b;font-size:.7rem}
.jobListMeta span+span{position:relative;padding-left:10px}
.jobListMeta span+span::before{content:"·";position:absolute;left:0;color:#94a3b8}
.jobListSalary{text-align:right}
.jobListSalary strong{display:block;color:#0f172a;font-size:.82rem;line-height:1.25}
.jobListSalary span{display:block;margin-top:3px;color:#94a3b8;font-size:.64rem}
.jobListOpen{justify-self:end;color:#17346d;font-size:.74rem;font-weight:800;white-space:nowrap}

.marketView{display:flex;flex-direction:column}
.marketView>section{padding:18px 0;border-bottom:1px solid #e2e8f0}
.marketView>section:first-child{padding-top:6px}
.marketSectionHeading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:12px}
.marketSectionHeading>div>span{display:block;margin-bottom:4px;color:#64748b;font-size:.66rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.marketSectionHeading h3{margin:0;color:#0f172a;font-size:1.15rem;line-height:1.25}
.marketSectionHeading p{max-width:520px;margin:0;color:#64748b;font-size:.77rem;line-height:1.5;text-align:right}
.marketSectionHeading time{color:#64748b;font-size:.72rem;white-space:nowrap}
.marketBriefingV2 ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 28px;margin:0;padding:0;list-style:none}
.marketBriefingV2 li{position:relative;padding:9px 0 9px 14px;border-top:1px solid #f1f5f9;color:#334155;font-size:.86rem;line-height:1.45}
.marketBriefingV2 li::before{content:"";position:absolute;left:0;top:16px;width:5px;height:5px;border-radius:50%;background:#17346d}
.marketIdeaRows{display:flex;flex-direction:column}
.marketIdeaRow{display:grid;grid-template-columns:110px minmax(0,1fr);gap:16px;padding:12px 0;border-top:1px solid #f1f5f9}
.marketIdeaRow>span{color:#64748b;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.marketIdeaRow strong{display:block;color:#0f172a;font-size:.9rem;line-height:1.4}
.marketIdeaRow p{margin:4px 0 0;color:#475569;font-size:.78rem;line-height:1.5}
.marketRadarColumns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.marketRadarColumn{min-width:0}
.marketRadarColumn+ .marketRadarColumn{padding-left:28px;border-left:1px solid #e2e8f0}
.marketRadarColumn header{margin-bottom:6px}
.marketRadarColumn h4{margin:0;color:#0f172a;font-size:.9rem}
.marketRadarColumn header p{margin:4px 0 0;color:#64748b;font-size:.7rem;line-height:1.4}
.marketSignalRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:start;padding:11px 0;border-top:1px solid #f1f5f9;color:inherit;text-decoration:none}
a.marketSignalRow:hover .marketSignalRowText strong{color:#17346d}
.marketSignalRowText{min-width:0}
.marketSignalRowText strong{display:block;color:#0f172a;font-size:.8rem;line-height:1.45}
.marketSignalRowText small{display:block;margin-top:4px;color:#94a3b8;font-size:.65rem;line-height:1.4}
.marketSignalArrow{color:#94a3b8;font-size:.78rem}
.marketEmptyInline{margin:8px 0 0;color:#64748b;font-size:.78rem;line-height:1.5}
.marketPortfolioV2{display:grid;grid-template-columns:150px minmax(0,1fr);gap:20px;align-items:start}
.marketPortfolioIntro span{display:block;color:#64748b;font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}
.marketPortfolioIntro strong{display:block;margin-top:4px;color:#0f172a;font-size:.92rem}
.marketPortfolioContent{display:flex;gap:18px;flex-wrap:wrap;color:#475569;font-size:.76rem}
.marketPortfolioHint{min-width:220px;max-width:520px}
.marketPortfolioHint strong{display:block;color:#0f172a;font-size:.8rem}
.marketPortfolioHint span{display:block;margin-top:3px;line-height:1.45}
.marketSourceV2{margin:10px 0 0;color:#94a3b8;font-size:.66rem}

@media (max-width:980px){
  .jobListItemV3{grid-template-columns:minmax(0,1fr) 140px 75px;gap:12px}
  .marketRadarColumns{grid-template-columns:1fr;gap:0}
  .marketRadarColumn+.marketRadarColumn{padding-left:0;border-left:0;border-top:1px solid #e2e8f0;padding-top:14px;margin-top:14px}
}
@media (max-width:700px){
  .jobOverviewLine{gap:10px 14px;font-size:.7rem}
  .jobListItemV3{grid-template-columns:1fr;gap:8px;padding:13px 0}
  .jobListSalary{text-align:left}
  .jobListOpen{justify-self:start}
  .marketSectionHeading{display:block}
  .marketSectionHeading p{margin-top:7px;text-align:left;font-size:.72rem}
  .marketSectionHeading time{display:block;margin-top:6px}
  .marketBriefingV2 ul{grid-template-columns:1fr}
  .marketIdeaRow{grid-template-columns:1fr;gap:5px}
  .marketRadarColumns{grid-template-columns:1fr}
  .marketPortfolioV2{grid-template-columns:1fr;gap:10px}
}

/* ============================================================
   Dashboard v1.0.29 – Market Desk, Depot-Analysten & Jobs-Tabelle
   ============================================================ */
.marketDeskV3{display:flex;flex-direction:column}
.marketDeskV3>section{border-bottom:1px solid #e2e8f0;padding:19px 0}
.marketDeskV3>section:first-child{padding-top:5px}
.marketSectionHeading--compact{margin-bottom:10px}
.marketLeadV3{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:0}
.marketBriefingV3{min-width:0;padding-right:30px}
.marketIdeasV3{min-width:0;padding-left:30px;border-left:1px solid #e2e8f0}
.marketBriefingV3 ul{margin:0;padding:0;list-style:none}
.marketBriefingV3 li{position:relative;padding:10px 0 10px 15px;border-top:1px solid #f1f5f9;color:#334155;font-size:.86rem;line-height:1.48}
.marketBriefingV3 li:first-child{border-top:0}
.marketBriefingV3 li::before{content:"";position:absolute;left:0;top:17px;width:5px;height:5px;border-radius:50%;background:#17346d}
.marketIdeaRowsV3{display:flex;flex-direction:column}
.marketIdeaRowV3{display:grid;grid-template-columns:92px minmax(0,1fr);gap:13px;padding:10px 0;border-top:1px solid #f1f5f9;color:inherit;text-decoration:none}
.marketIdeaRowV3:first-child{border-top:0}
a.marketIdeaRowV3:hover strong{color:#17346d}
.marketIdeaRowV3>span{padding-top:2px;color:#64748b;font-size:.65rem;font-weight:800;letter-spacing:.045em;text-transform:uppercase}
.marketIdeaRowV3 strong{display:block;color:#0f172a;font-size:.84rem;line-height:1.4}
.marketIdeaRowV3 p{margin:3px 0 0;color:#64748b;font-size:.72rem;line-height:1.45}
.marketIdeaRowV3--portfolio>span{color:#17346d}
.marketFeedV3{border-top:1px solid #e2e8f0}
.marketFeedRowV3{display:grid;grid-template-columns:104px minmax(0,1fr) 185px 20px;gap:14px;align-items:center;min-height:48px;padding:9px 3px;border-bottom:1px solid #eef2f6;color:inherit;text-decoration:none}
a.marketFeedRowV3:hover{background:#f8fafc}
.marketFeedType{color:#64748b;font-size:.64rem;font-weight:800;letter-spacing:.045em;text-transform:uppercase}
.marketFeedRowV3>strong{color:#0f172a;font-size:.8rem;line-height:1.4}
.marketFeedRowV3>small{color:#94a3b8;font-size:.66rem;line-height:1.35;text-align:right}
.marketFeedOpen{color:#64748b;font-size:.75rem;font-weight:800;text-align:right}
.portfolioAnalystTableWrap{overflow-x:auto;border-top:1px solid #e2e8f0}
.portfolioAnalystTable{width:100%;min-width:840px;border-collapse:collapse}
.portfolioAnalystTable th{padding:9px 10px;border-bottom:1px solid #dbe3ec;color:#64748b;font-size:.65rem;font-weight:800;letter-spacing:.035em;text-align:left;text-transform:uppercase;white-space:nowrap}
.portfolioAnalystTable td{padding:11px 10px;border-bottom:1px solid #eef2f6;color:#334155;font-size:.76rem;vertical-align:middle;white-space:nowrap}
.portfolioAnalystTable tbody tr:hover{background:#f8fafc}
.portfolioAnalystTable .alignRight{text-align:right}
.portfolioAnalystTable .analystInstrument{min-width:205px;white-space:normal}
.analystInstrument>a,.analystInstrument>strong{color:#0f172a;text-decoration:none}
.analystInstrument strong{display:block;font-size:.8rem;line-height:1.35}
.analystInstrument small{display:block;margin-top:2px;color:#94a3b8;font-size:.62rem}
.portfolioAnalystTable .analystBuy strong{color:var(--green)}
.portfolioAnalystTable .analystSell strong{color:var(--red)}
.analystStatus{color:#64748b!important;font-size:.68rem!important}
.analystStatus.isStale{font-style:italic}
.marketSourceV3{margin:10px 0 0;color:#94a3b8;font-size:.65rem}

.jobToolbarV4{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:1px 0 12px;padding:0 2px}
.jobToolbarV4>div{display:flex;align-items:baseline;gap:10px;min-width:0}
.jobToolbarV4 strong{color:#0f172a;font-size:.9rem}
.jobToolbarV4 span{color:#64748b;font-size:.71rem}
.jobSavedTableLink{display:inline-flex;align-items:center;justify-content:center;min-height:34px;border:1px solid #cad6e5;border-radius:9px;padding:6px 10px;color:#17346d;font-size:.72rem;font-weight:800;text-decoration:none;white-space:nowrap}
.jobSavedTableLink:hover{background:#f5f8fc}
.jobTableWrapV4{overflow-x:auto;border-top:1px solid #dfe6ef}
.jobTableV4{width:100%;min-width:1120px;border-collapse:collapse;table-layout:fixed}
.jobTableV4 th{padding:9px 10px;border-bottom:1px solid #dfe6ef;color:#64748b;font-size:.64rem;font-weight:800;letter-spacing:.035em;text-align:left;text-transform:uppercase;white-space:nowrap}
.jobTableV4 td{padding:11px 10px;border-bottom:1px solid #edf1f5;color:#475569;font-size:.72rem;line-height:1.35;vertical-align:middle}
.jobTableV4 tbody tr:hover{background:#f8fafc}
.jobTableV4 .alignRight{text-align:right}
.jobTableV4 .jobColPosition{width:38%}
.jobTableV4 .jobColCompany{width:18%}
.jobTableV4 .jobColLocation{width:12%}
.jobTableV4 .jobColSalary{width:12%}
.jobTableV4 .jobColSource{width:8%}
.jobTableV4 .jobColReceived{width:9%}
.jobTableV4 .jobColOpen{width:3%}
.jobTablePosition{min-width:0}
.jobTablePosition a{color:inherit;text-decoration:none}
.jobTablePosition strong{display:block;color:#0f172a;font-size:.82rem;line-height:1.4}
.jobTableSecondary{color:#64748b!important;font-size:.68rem!important}
.jobTableSalary{color:#0f172a!important;font-weight:700;white-space:nowrap}
.jobTableCompany,.jobTableLocation{overflow-wrap:anywhere}
.jobTableOpen{width:28px;text-align:right}
.jobTableOpen a{color:#17346d;font-size:.86rem;font-weight:900;text-decoration:none}
.jobTableNote{margin:9px 0 0;color:#64748b;font-size:.68rem}

@media (max-width:980px){
  .marketLeadV3{grid-template-columns:1fr}
  .marketBriefingV3{padding-right:0}
  .marketIdeasV3{margin-top:15px;padding:15px 0 0;border-top:1px solid #e2e8f0;border-left:0}
  .marketFeedRowV3{grid-template-columns:92px minmax(0,1fr) 155px 18px;gap:10px}
}
@media (max-width:700px){
  .marketDeskV3>section{padding:14px 0}
  .marketFeedRowV3{grid-template-columns:78px minmax(0,1fr) 18px;align-items:start;padding:10px 0}
  .marketFeedRowV3>small{grid-column:2;text-align:left}
  .marketFeedOpen{grid-column:3;grid-row:1/3}
  .marketIdeaRowV3{grid-template-columns:72px minmax(0,1fr);gap:9px}
  .portfolioAnalystTableWrap{margin-right:-4px}
  .jobToolbarV4{align-items:flex-start;flex-direction:column;gap:8px}
  .jobToolbarV4>div{display:block}
  .jobToolbarV4 span{display:block;margin-top:3px}
  .jobSavedTableLink{width:100%}
  .jobTableWrapV4{overflow:visible;border-top:0}
  .jobTableV4{display:block;min-width:0}
  .jobTableV4 thead{display:none}
  .jobTableV4 tbody{display:grid;gap:8px}
  .jobTableV4 tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 12px;border:1px solid #e2e8f0;border-radius:10px;padding:10px;background:#fff}
  .jobTableV4 td{display:block;border:0;padding:0;font-size:.7rem}
  .jobTableV4 td::before{content:attr(data-label) ": ";color:#94a3b8;font-size:.61rem;font-weight:800;text-transform:uppercase}
  .jobTableV4 .jobTablePosition{grid-column:1/-1;width:auto;min-width:0;margin-bottom:2px}
  .jobTableV4 .jobTablePosition::before{display:none}
  .jobTableV4 .jobTablePosition strong{font-size:.82rem}
  .jobTableV4 .jobTableSalary{text-align:left}
  .jobTableV4 .jobTableOpen{grid-column:2;grid-row:2/6;text-align:right;align-self:center}
  .jobTableV4 .jobTableOpen::before{display:none}
  .jobTableOpen a{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #d7e0ea;border-radius:8px}
}

/* ============================================================
   Julian Platform v1.0.31 – Investments-Farbbänder + mobile Analysten
   ============================================================ */
.marketDeskV3 {
  gap: 12px;
  margin-top: 8px;
}
.marketDeskV3 > section {
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  padding: 18px 20px;
  overflow: hidden;
}
.marketDeskV3 > section:first-child { padding-top: 18px; }
.marketLeadV3 {
  border-color: #d8e5f6 !important;
  background: linear-gradient(135deg, #f4f8ff 0%, #ffffff 58%, #f2faf6 100%);
}
.marketRadarV3 {
  border-color: #efdfbf !important;
  background: linear-gradient(135deg, #fff9ed 0%, #ffffff 48%);
}
.portfolioAnalystV3 {
  border-color: #d6eadf !important;
  background: linear-gradient(135deg, #f2faf6 0%, #ffffff 46%);
}
.marketLeadV3 .marketSectionHeading > div > span { color: #315ea8; }
.marketRadarV3 .marketSectionHeading > div > span { color: #a16207; }
.portfolioAnalystV3 .marketSectionHeading > div > span { color: #16704a; }
.marketBriefingV3 li,
.marketIdeaRowV3,
.marketFeedRowV3,
.portfolioAnalystTable td { border-color: rgba(148,163,184,.18); }
a.marketFeedRowV3:hover,
.portfolioAnalystTable tbody tr:hover { background: rgba(255,255,255,.68); }
.marketSourceV3 { margin: 0 3px; }

/* Profits: annual result is green/red; cumulative is intentionally neutral. */
.profitsYearlyTable td.positive,
.profitsYearlyTable td.positive strong,
.mobileProfitYearlyTable td.positive,
.mobileProfitYearlyTable td.positive strong { color: var(--green) !important; }
.profitsYearlyTable td.negative,
.profitsYearlyTable td.negative strong,
.mobileProfitYearlyTable td.negative,
.mobileProfitYearlyTable td.negative strong { color: var(--red) !important; }
.profitCumulative,
.profitsYearlyTable td.profitCumulative,
.mobileProfitYearlyTable .profitCumulative,
.mobileReportKpi > strong.profitCumulative { color: #64748b !important; }

@media (max-width: 700px) {
  .marketDeskV3 { gap: 9px; margin-top: 5px; }
  .marketDeskV3 > section,
  .marketDeskV3 > section:first-child {
    padding: 13px 12px;
    border-radius: 12px;
  }
  .marketIdeasV3 { padding-top: 13px; }
  .marketSectionHeading { gap: 7px; }
  .marketSectionHeading > p { font-size: .68rem; line-height: 1.4; }

  .portfolioAnalystTableWrap { margin-right: 0; }
  .mobileAnalystConsensus {
    margin-top: 3px;
    overflow: visible;
    border: 0;
    border-radius: 0;
    background: transparent;
  }
  .mobileAnalystRow {
    padding: 12px 1px;
    border-top: 1px solid rgba(148,163,184,.22);
  }
  .mobileAnalystRow:first-child { border-top: 0; }
  .mobileAnalystHead {
    display: grid;
    grid-template-columns: minmax(0,1fr) auto;
    gap: 10px;
    align-items: start;
  }
  .mobileAnalystHead > div { min-width: 0; }
  .mobileAnalystHead a,
  .mobileAnalystHead > div > strong {
    display: flex;
    align-items: flex-start;
    gap: 5px;
    color: #0f172a;
    font-size: .82rem;
    font-weight: 820;
    line-height: 1.28;
    text-decoration: none;
  }
  .mobileAnalystHead a span { color: #64748b; font-size: .66rem; }
  .mobileAnalystHead small {
    display: block;
    margin-top: 3px;
    color: #8290a4;
    font-size: .58rem;
    line-height: 1.3;
  }
  .mobileAnalystPotential {
    min-width: 58px;
    padding-top: 1px;
    font-size: .78rem;
    font-weight: 850;
    text-align: right;
    white-space: nowrap;
  }
  .mobileAnalystPrices {
    display: grid;
    grid-template-columns: repeat(2,minmax(0,1fr));
    gap: 7px;
    margin-top: 9px;
  }
  .mobileAnalystPrices > div {
    min-width: 0;
    padding: 7px 8px;
    border-radius: 8px;
    background: rgba(255,255,255,.62);
  }
  .mobileAnalystPrices span,
  .mobileAnalystVotes span {
    display: block;
    color: #7c8ba1;
    font-size: .55rem;
    font-weight: 800;
    letter-spacing: .035em;
    text-transform: uppercase;
  }
  .mobileAnalystPrices strong {
    display: block;
    margin-top: 2px;
    color: #26364f;
    font-size: .7rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }
  .mobileAnalystVotes {
    display: grid;
    grid-template-columns: repeat(3,minmax(0,1fr));
    gap: 1px;
    margin-top: 6px;
    overflow: hidden;
    border-radius: 8px;
    background: rgba(148,163,184,.15);
  }
  .mobileAnalystVotes > div {
    min-width: 0;
    padding: 6px 8px;
    background: rgba(255,255,255,.74);
  }
  .mobileAnalystVotes strong {
    display: block;
    margin-top: 1px;
    font-size: .72rem;
    font-variant-numeric: tabular-nums;
  }
  .mobileAnalystVotes .isBuy strong { color: var(--green); }
  .mobileAnalystVotes .isHold strong { color: #a16207; }
  .mobileAnalystVotes .isSell strong { color: var(--red); }

  .mobileProfitYearlyTable td.positive,
  .mobileProfitYearlyTable td.positive strong { color: var(--green) !important; }
  .mobileProfitYearlyTable td.negative,
  .mobileProfitYearlyTable td.negative strong { color: var(--red) !important; }
  .mobileProfitYearlyTable td:first-child .profitCumulative { color: #64748b !important; }
}

/* ==========================================================
   Dashboard v1.0.32 – kompakte Summary-KPIs & stabile Profit-Filter
   ========================================================== */
.dashboardSummaryKpis {
  align-items: stretch;
}

.dashboardSummaryKpis .kpiCard {
  min-height: 112px;
  height: 100%;
  padding: 13px 15px;
}

.dashboardSummaryKpis .kpiValue {
  margin-top: 10px;
  font-size: clamp(1.35rem, 1.8vw, 1.72rem);
  line-height: 1.08;
}

.dashboardSummaryKpis .kpiDetail {
  margin-top: 3px;
  font-size: .74rem;
}

.isProfitFilteredOut {
  display: none !important;
}

@media (max-width: 700px) {
  .dashboardSummaryKpis .kpiCard {
    min-height: 92px !important;
    padding: 10px 11px !important;
  }
  .dashboardSummaryKpis .kpiValue {
    margin-top: 7px !important;
    font-size: 1.3rem !important;
  }
}

/* Playground v1.0.34: persönliches Command Center & Cloud-Dossiers */
.playgroundSectionHead {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
  margin-top: 17px;
  padding-bottom: 7px;
  border-bottom: 1px solid var(--border);
}
.playgroundSectionHead > div { display: grid; gap: 2px; }
.playgroundSectionHead span { color: #6d28d9; font-size: .61rem; font-weight: 850; letter-spacing: .08em; }
.playgroundSectionHead h4 { margin: 0; color: var(--navy); font-size: .86rem; }
.playgroundSectionHead small { color: var(--muted); font-size: .63rem; text-align: right; }
.playgroundSignalList { display: grid; gap: 8px; margin-top: 10px; }
.playgroundSignal {
  display: grid;
  grid-template-columns: 38px minmax(0,1fr) auto;
  gap: 11px;
  align-items: center;
  padding: 12px 13px;
  border: 1px solid var(--border);
  border-left: 4px solid #3b82f6;
  border-radius: 10px;
  background: #fff;
}
.playgroundSignal--amber { border-left-color: #f59e0b; background: #fffdf7; }
.playgroundSignal--green { border-left-color: #22c55e; background: #f8fff9; }
.playgroundSignal--blue { border-left-color: #3b82f6; background: #f8fbff; }
.playgroundSignal--violet { border-left-color: #8b5cf6; background: #fcfaff; }
.playgroundSignalIcon { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 9px; background: rgba(255,255,255,.9); font-size: 1.05rem; }
.playgroundSignalMain { display: grid; min-width: 0; gap: 3px; }
.playgroundSignalMain > div { display: flex; align-items: center; gap: 7px; }
.playgroundSignalMain small { color: var(--muted); font-size: .59rem; font-weight: 800; text-transform: uppercase; }
.playgroundSignalMain em { padding: 2px 5px; border-radius: 5px; color: #38506f; background: #eef2f7; font-size: .55rem; font-style: normal; font-weight: 800; }
.playgroundSignalMain strong { color: var(--navy); font-size: .8rem; }
.playgroundSignalMain p { margin: 0; color: var(--text); font-size: .69rem; line-height: 1.42; }
.playgroundSignalMain b { color: #52627a; font-size: .64rem; font-weight: 760; line-height: 1.4; }
.playgroundSourceLink { display: inline-flex; align-items: center; justify-content: center; padding: 6px 8px; border: 1px solid #cbd5e1; border-radius: 7px; color: #1d4ed8; background: #fff; font-size: .62rem; font-weight: 800; text-decoration: none; white-space: nowrap; }
.playgroundSourceLink:hover { border-color: #93c5fd; background: #eff6ff; }
.playgroundSourceLink.isDisabled { color: var(--muted); cursor: default; }
.playgroundIdeaRank { display: grid; gap: 6px; margin-top: 10px; }
.playgroundIdeaRank article { display: grid; grid-template-columns: 28px minmax(0,1fr) auto; gap: 10px; align-items: start; padding: 9px 11px; border: 1px solid var(--border); border-radius: 9px; background: var(--card-soft); }
.playgroundIdeaRank article > b { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 7px; color: #5b21b6; background: #ede9fe; font-size: .67rem; }
.playgroundIdeaRank article > div { display: grid; gap: 2px; min-width: 0; }
.playgroundIdeaRank strong { color: var(--navy); font-size: .72rem; }
.playgroundIdeaRank p { margin: 0; color: var(--muted); font-size: .64rem; line-height: 1.4; }
.playgroundIdeaRank em { color: #166534; font-size: .64rem; font-style: normal; font-weight: 850; }
.playgroundSystemWarnings { display: grid; gap: 4px; margin-top: 10px; padding: 10px 12px; border: 1px solid #fde68a; border-radius: 9px; background: #fffbeb; }
.playgroundSystemWarnings strong { color: #92400e; font-size: .69rem; }
.playgroundSystemWarnings span { color: #785b26; font-size: .62rem; }
.playgroundCareerProfile { display: flex; align-items: center; gap: 9px; margin-top: 12px; padding: 11px 12px; border: 1px solid #dbeafe; border-radius: 10px; background: #f8fbff; }
.playgroundCareerProfile > div { display: grid; flex: 1; min-width: 0; gap: 2px; }
.playgroundCareerProfile > div > span { color: #2563eb; font-size: .57rem; font-weight: 850; letter-spacing: .06em; }
.playgroundCareerProfile strong { color: var(--navy); font-size: .77rem; }
.playgroundCareerProfile small { color: var(--muted); font-size: .62rem; }
.playgroundCareerProfile p { max-width: 260px; margin: 0; color: #38506f; font-size: .65rem; line-height: 1.35; }
.playgroundTravelSourceBar { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin-top: 10px; padding: 9px 11px; border-radius: 9px; background: #f4f7fb; }
.playgroundTravelSourceBar > span { margin-right: 2px; color: var(--muted); font-size: .64rem; font-weight: 760; }
.playgroundCloudGrid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; margin-top: 14px; }
.playgroundCloudGrid article { display: grid; gap: 5px; min-width: 0; padding: 11px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--card-soft); }
.playgroundCloudGrid article > div { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.playgroundCloudGrid article > div span { color: #6d28d9; font-size: .59rem; font-weight: 850; text-transform: uppercase; }
.playgroundCloudGrid article > div em { color: var(--muted); font-size: .56rem; font-style: normal; }
.playgroundCloudGrid strong { color: var(--navy); font-size: .75rem; overflow-wrap: anywhere; }
.playgroundCloudGrid small { color: var(--muted); font-size: .63rem; line-height: 1.4; }
.playgroundCloudGrid footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 4px; padding-top: 7px; border-top: 1px solid var(--border); }
.playgroundCloudGrid time { color: var(--muted); font-size: .57rem; }

@media (max-width: 760px) {
  .playgroundSignal { grid-template-columns: 34px minmax(0,1fr); }
  .playgroundSignal > .playgroundSourceLink { grid-column: 2; justify-self: start; }
  .playgroundSignalIcon { width: 32px; height: 32px; }
  .playgroundIdeaRank article { grid-template-columns: 26px minmax(0,1fr); }
  .playgroundIdeaRank em { grid-column: 2; }
  .playgroundCareerProfile { align-items: flex-start; flex-wrap: wrap; }
  .playgroundCareerProfile p { flex: 1 1 100%; max-width: none; }
  .playgroundCloudGrid { grid-template-columns: 1fr; }
  .playgroundSectionHead { align-items: flex-start; flex-direction: column; gap: 3px; }
  .playgroundSectionHead small { text-align: left; }
}
.playgroundDecisionGrid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin-top:11px; }
.playgroundDecisionGrid article { display:grid; grid-template-columns:24px minmax(0,1fr); gap:8px; align-items:start; padding:10px; border:1px solid #dbeafe; border-radius:9px; background:#f8fbff; }
.playgroundDecisionGrid b { display:grid; place-items:center; width:23px; height:23px; border-radius:6px; color:#1d4ed8; background:#dbeafe; font-size:.62rem; }
.playgroundDecisionGrid p { margin:0; color:#38506f; font-size:.65rem; line-height:1.42; }
@media (max-width:760px){.playgroundDecisionGrid{grid-template-columns:1fr;}}

/* ============================================================
   Julian Platform v1.0.36 – Finance day-baseline reconciliation
   ============================================================ */
.marketBriefingV4 .marketSectionHeading { margin-bottom: 8px; }
.marketBriefingLeadV4 {
  margin: 0 0 10px;
  max-width: 760px;
  color: #26364f;
  font-size: .82rem;
  font-weight: 720;
  line-height: 1.48;
}
.marketBriefingPointsV4 {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 8px;
}
.marketBriefingPointV4 {
  min-width: 0;
  padding: 10px 11px;
  border: 1px solid rgba(49,94,168,.14);
  border-radius: 10px;
  background: rgba(255,255,255,.68);
}
.marketBriefingPointV4 > span {
  display: block;
  margin-bottom: 4px;
  color: #315ea8;
  font-size: .6rem;
  font-weight: 850;
  letter-spacing: .045em;
  text-transform: uppercase;
}
.marketBriefingPointV4 > p {
  margin: 0;
  color: #334155;
  font-size: .76rem;
  line-height: 1.42;
}
.marketRadarV3 .marketFeedV3 { border-top-color: rgba(161,98,7,.16); }
.marketRadarV3 .marketFeedRowV3 { min-height: 44px; padding-top: 8px; padding-bottom: 8px; }
.marketIdeaRowV3 > span {
  width: max-content;
  max-width: 100%;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(49,94,168,.09);
  line-height: 1.15;
  white-space: nowrap;
}
.marketIdeaRowV3--portfolio > span {
  background: rgba(22,112,74,.10);
  color: #16704a;
}
.newsCategoryChip {
  display: inline-flex !important;
  width: max-content;
  max-width: 100%;
  margin: 0 0 5px !important;
  padding: 2px 6px;
  border-radius: 999px;
  background: #eef4ff;
  color: #315ea8 !important;
  font-size: .58rem !important;
  font-style: normal;
  font-weight: 820 !important;
  letter-spacing: .025em;
  line-height: 1.35;
  text-transform: uppercase;
}

@media (max-width: 980px) {
  .marketBriefingPointsV4 { grid-template-columns: 1fr; }
}

@media (max-width: 700px) {
  .marketLeadV3 { gap: 0; }
  .marketBriefingLeadV4 {
    margin-bottom: 8px;
    font-size: .75rem;
    line-height: 1.42;
  }
  .marketBriefingPointsV4 { gap: 6px; }
  .marketBriefingPointV4 {
    padding: 8px 9px;
    border-radius: 8px;
  }
  .marketBriefingPointV4 > span { margin-bottom: 3px; font-size: .56rem; }
  .marketBriefingPointV4 > p { font-size: .72rem; line-height: 1.4; }

  /* Kein zweispaltiges Label/Text-Grid mehr: lange KI-Typen wie MARKET_TREND
     können dadurch auf kleinen Displays nicht mehr in den Titel laufen. */
  .marketIdeaRowV3,
  .marketIdeaRowV3:first-child {
    display: block;
    padding: 9px 0;
  }
  .marketIdeaRowV3 > span {
    display: inline-flex;
    margin: 0 0 5px;
    padding: 2px 6px;
    font-size: .56rem;
  }
  .marketIdeaRowV3 strong { font-size: .79rem; line-height: 1.34; overflow-wrap: anywhere; }
  .marketIdeaRowV3 p { margin-top: 3px; font-size: .69rem; line-height: 1.42; }

  .marketRadarV3 .marketSectionHeading > p { display: none; }
  .marketFeedRowV3 { grid-template-columns: 68px minmax(0,1fr) 16px; gap: 8px; }
  .marketFeedType { font-size: .56rem; }
  .marketFeedRowV3 > strong { font-size: .74rem; line-height: 1.35; overflow-wrap: anywhere; }
  .marketFeedRowV3 > small { margin-top: -1px; font-size: .6rem; }

  .portfolioAnalystV3 .marketSectionHeading > p {
    margin-top: 4px;
    max-width: 100%;
    font-size: .62rem;
    overflow-wrap: anywhere;
  }
  .mobileAnalystRow { padding: 10px 0; }
  .mobileAnalystHead { grid-template-columns: minmax(0,1fr) minmax(52px,auto); }
  .mobileAnalystHead a,
  .mobileAnalystHead > div > strong { font-size: .78rem; line-height: 1.25; overflow-wrap: anywhere; }
  .mobileAnalystPrices { gap: 5px; margin-top: 7px; }
  .mobileAnalystPrices > div { padding: 6px 7px; }
  .mobileAnalystPrices strong { font-size: .67rem; }
  .mobileAnalystVotes > div { padding: 5px 7px; }

  .newsList--single .newsRow { min-height: 0; }
  .newsCategoryChip { margin-bottom: 4px !important; font-size: .54rem !important; }
}

/* v1.0.37 – Finance-Historie: sichtbarer Hinweis bei rückwirkenden Transaktionslücken */
.chartDataNotice {
  margin: 8px 0 0;
  padding: 9px 11px;
  border: 1px solid #f0d99a;
  border-radius: 10px;
  background: #fff9e9;
  color: #725316;
  font-size: 0.78rem;
  line-height: 1.45;
}
.chartDataNotice strong { color: #8a5d00; }

/* v1.0.39 – Jobs ausschließlich aus Google Sheet „NEU“ */
.jobToolbarV5{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0 14px;border-bottom:1px solid #e2e8f0}
.jobToolbarV5>div{display:flex;align-items:baseline;gap:10px;min-width:0;flex-wrap:wrap}
.jobToolbarV5 strong{color:#12213a;font-size:.91rem}
.jobToolbarV5 span{color:#718096;font-size:.72rem}
.jobFiltersV5{display:grid;grid-template-columns:minmax(240px,1.7fr) repeat(4,minmax(120px,.7fr)) auto auto;gap:10px;align-items:end;padding:14px 0;border-bottom:1px solid #e2e8f0}
.jobFiltersV5 label{display:grid;gap:5px;min-width:0}
.jobFiltersV5 label>span{font-size:.61rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#718096}
.jobFiltersV5 input,.jobFiltersV5 select{width:100%;height:36px;border:1px solid #d7e0eb;border-radius:9px;background:#fff;color:#24354f;padding:0 10px;font:inherit;font-size:.72rem;outline:none}
.jobFiltersV5 input:focus,.jobFiltersV5 select:focus{border-color:#6d8fc5;box-shadow:0 0 0 3px rgba(43,91,158,.09)}
.jobFilterReset{height:36px;border:1px solid #cfdaea;border-radius:9px;background:#f8fafc;color:#23457d;padding:0 12px;font-weight:750;font-size:.69rem;cursor:pointer;white-space:nowrap}
.jobFilterReset:hover{background:#eef4fb}
.jobFilterCount{height:36px;display:flex;align-items:center;justify-content:flex-end;color:#64748b;font-size:.68rem;font-weight:750;white-space:nowrap}
.jobTableV5{min-width:1220px;table-layout:fixed}
.jobTableV5 .jobColFit{width:8%}.jobTableV5 .jobColPosition{width:31%}.jobTableV5 .jobColCompany{width:14%}.jobTableV5 .jobColPublished{width:10%}.jobTableV5 .jobColSalary{width:12%}.jobTableV5 .jobColApplied{width:9%}.jobTableV5 .jobColSource{width:10%}.jobTableV5 .jobColOpen{width:4%}
.jobTableV5 th{padding-top:10px;padding-bottom:10px}
.jobTableV5 .sortButton{appearance:none;border:0;background:transparent;padding:0;color:inherit;font:inherit;font-weight:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;white-space:nowrap}
.jobTableV5 .sortButton span{display:inline-block;margin-left:3px;color:#9aa8bb;font-size:.68rem}
.jobTableV5 .sortButton.isSorted{color:#173c7b}.jobTableV5 .sortButton.isSorted span{color:#173c7b}
.jobTableV5 .jobTableFit{font-size:.72rem;white-space:nowrap;letter-spacing:-.07em}
.jobTableV5 .jobTablePosition strong{display:block;color:#10213c;font-size:.75rem;line-height:1.35}
.jobTableV5 .jobTablePosition>a{text-decoration:none}.jobTableV5 .jobTablePosition>a:hover strong{text-decoration:underline}
.jobTableComment{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:4px;color:#7b8ba1;font-size:.64rem;line-height:1.35;font-weight:450}
.jobTableV5 .jobTableSalary strong{display:block;color:#17243b;font-size:.71rem;white-space:nowrap}.jobTableV5 .jobTableSalary span{display:block;color:#8b99ab;font-size:.61rem;margin-top:2px}
.jobTableV5 .jobTablePublished,.jobTableV5 .jobTableApplied,.jobTableV5 .jobTableSecondary{white-space:nowrap}
.jobTableV5 .jobTableOpen a{display:inline-flex;width:28px;height:28px;align-items:center;justify-content:center;border:1px solid #d9e2ef;border-radius:8px;text-decoration:none;color:#173c7b;font-weight:800}
.jobTableV5 .jobTableOpen a:hover{background:#eef4fb}
.isJobFilteredOut{display:none!important}
.jobFilteredEmpty{padding:28px 16px;text-align:center;color:#718096;font-size:.8rem}
.jobFilteredEmpty[hidden]{display:none!important}
@media (max-width:1180px){
  .jobFiltersV5{grid-template-columns:minmax(220px,1.4fr) repeat(2,minmax(130px,.8fr));}
  .jobFilterReset,.jobFilterCount{justify-self:start}
}
@media (max-width:760px){
  .jobToolbarV5{align-items:flex-start;flex-direction:column;padding-bottom:10px}.jobToolbarV5 .jobSavedTableLink{align-self:flex-start}
  .jobFiltersV5{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 0 12px}.jobFiltersV5 .jobFilterSearch{grid-column:1/-1}.jobFiltersV5 input,.jobFiltersV5 select{height:40px;font-size:.8rem}.jobFilterReset{height:40px}.jobFilterCount{height:40px;justify-content:flex-end}
  .jobTableV5{display:block;min-width:0}.jobTableV5 thead{display:none}.jobTableV5 tbody{display:grid;gap:10px;padding-top:10px}
  .jobTableV5 tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 12px;border:1px solid #dfe7f0;border-radius:12px;padding:12px;background:#fff}
  .jobTableV5 td{display:block;border:0;padding:0;font-size:.72rem;min-width:0}.jobTableV5 td::before{content:attr(data-label) ": ";color:#94a3b8;font-size:.6rem;font-weight:800;text-transform:uppercase}
  .jobTableV5 .jobTablePosition{grid-column:1/-1;grid-row:1;width:auto;margin:0 0 2px}.jobTableV5 .jobTablePosition::before{display:none}.jobTableV5 .jobTablePosition strong{font-size:.88rem;line-height:1.32}.jobTableComment{-webkit-line-clamp:3;font-size:.7rem}
  .jobTableV5 .jobTableFit{grid-column:1;grid-row:2;letter-spacing:-.05em}.jobTableV5 .jobTableCompany{grid-column:1;grid-row:3}.jobTableV5 .jobTablePublished{grid-column:1;grid-row:4}.jobTableV5 .jobTableSalary{grid-column:1;grid-row:5}.jobTableV5 .jobTableApplied{grid-column:1;grid-row:6}.jobTableV5 .jobTableSecondary{grid-column:1;grid-row:7}
  .jobTableV5 .jobTableOpen{grid-column:2;grid-row:2/8;align-self:center;text-align:right}.jobTableV5 .jobTableOpen::before{display:none}.jobTableV5 .jobTableOpen a{width:36px;height:36px}
}

/* v1.0.40 – Desktopbreite, Kontrast und präzisere Jobs-Tabelle */
:root {
  --background: #edf1f6;
  --text: #17243a;
  --muted: #52637a;
  --muted-light: #708198;
  --line: #d6e0eb;
  --navy: #173d78;
  --navy-light: #285fa9;
}

body { color: var(--text); }
.tabButton { color:#34465f; font-size:.86rem; font-weight:760; }
.tabButton small { color:#52637a; }
.panelTitle h2 { color:var(--navy); font-size:1.3rem; }
.panelMeta { color:#53657d; font-size:.81rem; font-weight:620; }
.kpiTop { color:#52637a; }

@media (min-width: 761px) {
  .pageShell {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 14px 18px 30px;
  }
  .tabPanel { padding:20px 22px; }
  .dataTable { color:#2d3d55; font-size:.9rem; }
  .dataTable th { color:#40526b; font-size:.78rem; }
  .dataTable td { color:#2d3d55; font-size:.84rem; }
  .dataTable td > span { color:#5d7088; font-size:.72rem; }
}

.jobToolbarV5 strong { color:#17243a; font-size:.96rem; }
.jobToolbarV5 span { color:#5b6d84; font-size:.76rem; }
.jobSavedTableLink { border-color:#b9c9dd; color:#173d78; font-size:.75rem; }
.jobSavedTableLink:hover { background:#eef4fb; border-color:#8fa9cc; }
.jobFiltersV5 { grid-template-columns:minmax(260px,1.7fr) repeat(5,minmax(112px,.7fr)) auto auto; }
.jobFiltersV5 label>span { color:#52637a; font-size:.64rem; letter-spacing:.045em; }
.jobFiltersV5 input,.jobFiltersV5 select { border-color:#cbd7e5; color:#24364f; font-size:.76rem; }
.jobFilterReset { border-color:#bdcce0; color:#173d78; font-size:.73rem; }
.jobFilterCount { color:#52637a; font-size:.72rem; }

.jobTableV5 { min-width:1280px; }
.jobTableV5 .jobColFit{width:6%}
.jobTableV5 .jobColPosition{width:27%}
.jobTableV5 .jobColCompany{width:12%}
.jobTableV5 .jobColLocation{width:11%}
.jobTableV5 .jobColPublished{width:10%}
.jobTableV5 .jobColSalary{width:11%}
.jobTableV5 .jobColApplied{width:9%}
.jobTableV5 .jobColSource{width:9%}
.jobTableV5 .jobColOpen{width:5%}
.jobTableV5 th { color:#4b5e77; font-size:.66rem; text-align:left; }
.jobTableV5 td { color:#34465f; font-size:.76rem; }
.jobTableV5 .sortButton { width:auto; justify-content:flex-start; color:#4b5e77; }
.jobTableV5 .sortButton span { color:#7c8da3; }
.jobTableV5 .jobHeadFit,
.jobTableV5 .jobTableFit { text-align:center; }
.jobTableV5 .jobHeadFit .sortButton { width:100%; justify-content:center; }
.jobTableV5 .jobHeadDate,
.jobTableV5 .jobTablePublished,
.jobTableV5 .jobTableApplied { text-align:center; }
.jobTableV5 .jobHeadDate .sortButton { width:100%; justify-content:center; }
.jobTableV5 .jobHeadSalary,
.jobTableV5 .jobTableSalary { text-align:right; }
.jobTableV5 .jobHeadSalary .sortButton { width:100%; justify-content:flex-end; }
.jobTableV5 .jobHeadOpen,
.jobTableV5 .jobTableOpen { text-align:center; }
.jobTableV5 .jobTablePosition strong { color:#153866; font-size:.82rem; line-height:1.35; }
.jobPositionLink { display:inline-flex; align-items:flex-start; gap:6px; max-width:100%; color:#153866; text-decoration:none; cursor:pointer; }
.jobPositionLink > span { flex:0 0 auto; color:#58769f; font-size:.68rem; line-height:1.65; }
.jobPositionLink:hover strong,.jobPositionLink:focus-visible strong { color:#0f4f99; text-decoration:underline; text-underline-offset:2px; }
.jobPositionLink:focus-visible { outline:2px solid #7aa3d8; outline-offset:3px; border-radius:3px; }
.jobTableComment { color:#60738c; font-size:.68rem; line-height:1.42; }
.jobTableV5 .jobTableCompany,.jobTableV5 .jobTableLocation { color:#354861; overflow-wrap:anywhere; }
.jobTableV5 .jobTableSalary strong { color:#1f314b; font-size:.75rem; }
.jobTableV5 .jobTableSalary span { color:#667991; font-size:.65rem; }
.jobTableV5 .jobTableSecondary { color:#52657e!important; font-size:.72rem!important; }
.jobTableV5 .jobTablePublished,.jobTableV5 .jobTableApplied,.jobTableV5 .jobTableSalary { font-variant-numeric:tabular-nums; }

@media (max-width: 1380px) and (min-width: 761px) {
  .jobFiltersV5 { grid-template-columns:minmax(240px,1.5fr) repeat(3,minmax(120px,.75fr)); }
  .jobFilterReset,.jobFilterCount { justify-self:start; }
}

@media (max-width:760px) {
  .jobFiltersV5 { grid-template-columns:1fr 1fr; }
  .jobTableV5 td::before { color:#6d7f96; }
  .jobTableV5 .jobTableFit{grid-column:1;grid-row:2}
  .jobTableV5 .jobTableCompany{grid-column:1;grid-row:3}
  .jobTableV5 .jobTableLocation{grid-column:1;grid-row:4}
  .jobTableV5 .jobTablePublished{grid-column:1;grid-row:5;text-align:left}
  .jobTableV5 .jobTableSalary{grid-column:1;grid-row:6;text-align:left}
  .jobTableV5 .jobTableApplied{grid-column:1;grid-row:7;text-align:left}
  .jobTableV5 .jobTableSecondary{grid-column:1;grid-row:8}
  .jobTableV5 .jobTableOpen{grid-column:2;grid-row:2/9}
  .jobPositionLink > span { font-size:.72rem; }
}

@media (min-width:761px) {
  .hero { min-height:146px; }
  .hero h1 { font-size:clamp(2.15rem,3.2vw,2.72rem); }
  .heroMeta { color:#e3edfb; font-size:.91rem; }
}
