/* ==========================================================
   v178 — GENERIC THEME REBUILD
   IMPORTANT: identity-only layer. No scorecard dimensions, positioning,
   scrolling, editor geometry, modal geometry, or scoring semantics live here.
   ========================================================== */

/* Generic uses the v177.1 neutral surfaces and adds one coordinated accent. */
body.theme-generic{
  --generic-accent:var(--accent);
  --generic-accent-ink:var(--custom-accent-ink,#fff);
  --generic-soft:color-mix(in srgb,var(--accent) 8%,var(--panel));
  --generic-soft-strong:color-mix(in srgb,var(--accent) 14%,var(--panel));
  --generic-line:color-mix(in srgb,var(--accent) 38%,var(--line));
}

/* Header / live game identity. Geometry remains inherited from Default. */
body.theme-generic:not(.home-page) .live-game-bar{
  box-shadow:inset 0 3px 0 var(--accent),0 6px 18px rgba(15,23,42,.06)!important;
  border-color:color-mix(in srgb,var(--accent) 28%,var(--line))!important;
}
body.theme-generic .live-inning>strong,
body.theme-generic .live-team>strong{color:var(--accent)!important}
body.theme-generic .live-out-dots i{border-color:color-mix(in srgb,var(--accent) 58%,var(--line))!important}
body.theme-generic .live-out-dots i.on{background:var(--accent)!important;border-color:var(--accent)!important}

/* Workspace navigation / section hierarchy. */
body.theme-generic .mode-workspace-tabs button.active{
  background:var(--generic-soft-strong)!important;
  border-color:var(--generic-line)!important;
  box-shadow:inset 0 -2px 0 var(--accent)!important;
}
body.theme-generic .mode-workspace-tabs button.active span,
body.theme-generic .mode-workspace-tabs button.active b{color:var(--accent)!important}
body.theme-generic .team-scorebook{
  box-shadow:inset 0 2px 0 color-mix(in srgb,var(--accent) 78%,transparent)!important;
  border-color:color-mix(in srgb,var(--accent) 22%,var(--line))!important;
}
body.theme-generic .team-scorebook-head,
body.theme-generic .pane-title{
  background:color-mix(in srgb,var(--accent) 5%,var(--panel2))!important;
}
body.theme-generic .team-scorebook-head .title-glyph,
body.theme-generic .pane-title .title-glyph,
body.theme-generic .pane-title>span,
body.theme-generic .add-pitcher-btn,
body.theme-generic .section-collapse{color:var(--accent)!important}
body.theme-generic .add-pitcher-btn,
body.theme-generic .section-collapse{border-color:color-mix(in srgb,var(--accent) 30%,var(--line))!important}

/* Defensive alignment keeps a baseball field, while badges/cards carry the palette. */
body.theme-generic .team-defense-pane{border-color:color-mix(in srgb,var(--accent) 32%,var(--line))!important}
body.theme-generic .team-defense-field{
  background:linear-gradient(180deg,
    color-mix(in srgb,#285f40 92%,var(--accent) 8%) 0%,
    color-mix(in srgb,#17422e 94%,var(--accent) 6%) 72%,
    color-mix(in srgb,#123723 95%,var(--accent) 5%) 100%)!important;
}
body.theme-generic .team-defense-pos{
  border-color:color-mix(in srgb,var(--accent) 48%,rgba(242,232,205,.42))!important;
}
body.theme-generic .team-defense-pos>span{
  background:var(--accent)!important;
  border-color:color-mix(in srgb,var(--accent) 72%,#fff)!important;
  color:var(--generic-accent-ink)!important;
}
body.theme-generic .team-defense-pos.is-filled:hover{
  border-color:var(--accent)!important;
  background:color-mix(in srgb,rgba(5,29,20,.92) 82%,var(--accent) 18%)!important;
}
body.theme-generic .defense-mode-note{color:var(--accent)!important}

/* Generic makes Score the one strongly branded system action. Other nav remains neutral. */
body.theme-generic:not(.home-page) .mobile-action-bar .score-command,
body.theme-generic:not(.home-page) .mobile-action-bar.v91-action-bar .score-command,
body.theme-generic:not(.home-page) .v92-action-bar .score-command{
  background:var(--accent)!important;
  border-color:var(--accent)!important;
  box-shadow:0 5px 16px color-mix(in srgb,var(--accent) 26%,transparent)!important;
}
body.theme-generic:not(.home-page) .mobile-action-bar .score-command span,
body.theme-generic:not(.home-page) .mobile-action-bar .score-command small{
  color:var(--generic-accent-ink)!important;
}
body.theme-generic .mobile-action-bar button.is-active:not(.score-command) span,
body.theme-generic .mobile-action-bar button.is-active:not(.score-command) small{color:var(--accent)!important}

/* Buttons/selected controls pick up the theme without recoloring destructive or semantic baseball states. */
body.theme-generic .primary:not(.danger),
body.theme-generic button.selected:not(.danger),
body.theme-generic .segmented button.active:not(.danger){
  border-color:color-mix(in srgb,var(--accent) 56%,var(--line))!important;
}
body.theme-generic .play-log-row:active,
body.theme-generic .v126-play-event:active{background:var(--generic-soft)!important}

/* Dark mode stays genuinely dark; only identity accent survives. */
body.theme-generic.dark-mode{
  --generic-soft:color-mix(in srgb,var(--accent) 10%,#212121);
  --generic-soft-strong:color-mix(in srgb,var(--accent) 15%,#212121);
  --generic-line:color-mix(in srgb,var(--accent) 42%,#4a4a4a);
}
body.theme-generic.dark-mode .live-game-bar{box-shadow:inset 0 3px 0 var(--accent)!important}
body.theme-generic.dark-mode .team-scorebook{box-shadow:inset 0 2px 0 color-mix(in srgb,var(--accent) 82%,transparent)!important}

/* Appearance → Generic palette cards. This replaces the buried select. */
.v178-generic-picker{display:grid;gap:8px;width:100%}
.v178-generic-picker-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}
.v178-generic-picker-head>span{font-size:8px;font-weight:950;letter-spacing:.12em;color:var(--ui-text)}
.v178-generic-picker-head>small{font-size:7px;color:var(--ui-muted);text-align:right}
.v178-generic-palette-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.v178-generic-palette-grid button{
  min-width:0;min-height:56px;padding:7px 8px;border:1px solid var(--ui-line);border-radius:12px;
  background:var(--ui-surface);color:var(--ui-text);display:grid;grid-template-columns:24px minmax(0,1fr) 14px;
  align-items:center;gap:7px;text-align:left;box-shadow:none;
}
.v178-generic-palette-grid button>i{
  width:24px;height:24px;border-radius:8px;background:var(--palette);display:block;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.22),0 1px 4px rgba(0,0,0,.12)
}
.v178-generic-palette-grid button>span{display:grid;gap:1px;min-width:0}
.v178-generic-palette-grid button b{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v178-generic-palette-grid button small{font-size:6.5px;color:var(--ui-muted)}
.v178-generic-palette-grid button em{font-style:normal;font-size:10px;font-weight:950;color:transparent;text-align:center}
.v178-generic-palette-grid button.active{
  border-color:var(--palette);background:color-mix(in srgb,var(--palette) 7%,var(--ui-surface));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--palette) 28%,transparent)
}
.v178-generic-palette-grid button.active em{color:var(--palette)}
body .v92-theme-options .generic-sub{margin:0!important;padding:10px!important;border:1px solid var(--ui-line)!important;border-radius:13px!important;background:var(--ui-surface-2)!important}

@media(max-width:420px){
  .v178-generic-palette-grid{gap:5px}
  .v178-generic-palette-grid button{min-height:51px;padding:6px;grid-template-columns:21px minmax(0,1fr) 11px;gap:5px}
  .v178-generic-palette-grid button>i{width:21px;height:21px;border-radius:7px}
  .v178-generic-palette-grid button b{font-size:8px}
  .v178-generic-palette-grid button small{font-size:6px}
  .v178-generic-picker-head>small{display:none}
}

/* Explicitly preserve semantic score colors across every Generic palette. */
body.theme-generic .play-entry .runner-out-path,
body.theme-generic .play-entry .runner-out-mark{stroke:var(--score-out,#d94a43)!important}
body.theme-generic .play-entry.out:not(.runner-out) .play-code,
body.theme-generic .standalone-out{color:var(--score-out,#d94a43)!important}
body.theme-generic .play-entry.scored .diamond-fill{fill:var(--score-run,#45bb69)!important}
body.theme-generic .rbi-code{color:var(--score-run,#45bb69)!important}

/* ==========================================================
   v178.1 — GENERIC CHROME FIT + THEMED MENU ACTIONS
   - Team identity header pins directly beneath the sticky workspace tabs.
   - Primary/selected utility actions inherit the selected Generic palette.
   - Destructive and baseball-semantic colors remain independent.
   ========================================================== */
@media(max-width:900px){
  body.theme-generic:not(.home-page) .team-scorebook-head{
    top:var(--v1781-team-head-top,calc(var(--v115-livebar-h,76px) + 49px))!important;
  }
}

/* Primary utility/menu actions use the active Generic palette. */
body.theme-generic .modal button.primary:not(.danger),
body.theme-generic .setup-actions button.primary:not(.danger),
body.theme-generic .v1561-personnel-actions button.primary:not(.danger),
body.theme-generic .v162-detail-actions button.primary:not(.danger),
body.theme-generic .v167-postgame-footer button.primary:not(.danger),
body.theme-generic .game-report-actions button.primary:not(.danger),
body.theme-generic .postgame-footer-actions button.primary:not(.danger),
body.theme-generic .postgame-banner button.primary:not(.danger),
body.theme-generic #v176PersonalTeamModal .v176-team-manager-actions button.primary:not(.danger),
body.theme-generic #lineupManagerModal .v176-team-template-bar button.primary:not(.danger){
  background:var(--accent)!important;
  background-color:var(--accent)!important;
  background-image:none!important;
  border-color:var(--accent)!important;
  color:var(--generic-accent-ink)!important;
  box-shadow:0 3px 10px color-mix(in srgb,var(--accent) 22%,transparent)!important;
}
body.theme-generic .modal button.primary:not(.danger) :is(span,small,b,strong),
body.theme-generic .game-report-actions button.primary:not(.danger) span{
  color:var(--generic-accent-ink)!important;
}

/* Selected utility controls should read as part of the same theme family. */
body.theme-generic #lineupManagerModal .v102-side-tabs button.active,
body.theme-generic .v105-play-filters button.active{
  background:var(--accent)!important;
  background-color:var(--accent)!important;
  background-image:none!important;
  border-color:var(--accent)!important;
  color:var(--generic-accent-ink)!important;
  box-shadow:0 3px 10px color-mix(in srgb,var(--accent) 22%,transparent)!important;
}
body.theme-generic .v175-source-empty button{
  background:var(--accent)!important;
  border-color:var(--accent)!important;
  color:var(--generic-accent-ink)!important;
}

/* Destructive actions always stay destructive red, never palette-colored. */
body.theme-generic .danger,
body.theme-generic #confirmModal #confirmOk,
body.theme-generic #v176PersonalTeamModal .v176-team-manager-actions button.danger{
  color:#c62828!important;
}

/* ==========================================================
   v178.2 — GENERIC = DEFAULT ARCHITECTURE + COLOR TOKENS ONLY
   Generic deliberately carries the theme-default baseline class at runtime.
   That makes every current Default component/layout the source of truth while
   this final stylesheet is allowed to change identity tokens only.
   ========================================================== */
body.theme-default.theme-generic{
  /* Restore the selected Generic accent after Default's deliberately neutral
     --accent rule. This is the only theme identity source for Generic. */
  --accent:var(--custom-accent-safe,var(--custom-accent))!important;
  --selected:var(--custom-selected)!important;
}

/* The approved current Home screen is inherited from Default. Re-map its
   legacy v97 blue token to the active Generic palette without changing any
   dimensions, spacing, or component structure. */
body.home-page.theme-default.theme-generic{
  --v97-blue:var(--accent)!important;
  --v97-blue-deep:color-mix(in srgb,var(--accent) 84%,#000 16%)!important;
  --v97-soft:color-mix(in srgb,var(--accent) 5%,#fff 95%)!important;
}
body.home-page.theme-default.theme-generic .v97-save-line>span{
  border-color:color-mix(in srgb,var(--accent) 30%,#dfe5ec)!important;
  color:var(--accent)!important;
  background:color-mix(in srgb,var(--accent) 5%,#fff)!important;
}
body.home-page.theme-default.theme-generic .v97-current-head>span i{
  background:var(--accent)!important;
  box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 10%,transparent)!important;
}
body.home-page.theme-default.theme-generic .v97-current-head em{
  border-color:color-mix(in srgb,var(--accent) 28%,#dfe5ec)!important;
  color:color-mix(in srgb,var(--accent) 82%,#111 18%)!important;
  background:color-mix(in srgb,var(--accent) 4%,#fff)!important;
}
body.home-page.theme-default.theme-generic .v97-home-tabs button.active{
  color:var(--accent)!important;
  background:color-mix(in srgb,var(--accent) 4%,#fff)!important;
}
body.home-page.theme-default.theme-generic .v97-home-tabs button.active span,
body.home-page.theme-default.theme-generic .v97-current-score>b,
body.home-page.theme-default.theme-generic .v97-home-footer>span{
  color:var(--accent)!important;
}
body.home-page.theme-default.theme-generic .v97-home-tabs button.active:after,
body.home-page.theme-default.theme-generic .v97-base-state i.on{
  background:var(--accent)!important;
}
body.home-page.theme-default.theme-generic .v97-continue{
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,#fff 12%) 0%,var(--accent) 100%)!important;
  color:var(--generic-accent-ink)!important;
  box-shadow:0 9px 20px color-mix(in srgb,var(--accent) 22%,transparent)!important;
}
body.home-page.theme-default.theme-generic .v97-continue :is(span,b,em){color:var(--generic-accent-ink)!important}
body.home-page.theme-default.theme-generic .v97-action-icon{
  border-color:var(--accent)!important;
  color:var(--accent)!important;
}

/* Dark Mode still uses the exact Default dark surfaces; only the identity
   accent changes. Keep accent-backed controls legible across all six colors. */
body.home-page.theme-default.theme-generic.dark-mode{
  --v97-blue:var(--accent)!important;
  --v97-blue-deep:color-mix(in srgb,var(--accent) 82%,#000 18%)!important;
  --v97-soft:color-mix(in srgb,var(--accent) 8%,#202226 92%)!important;
}
body.home-page.theme-default.theme-generic.dark-mode .v97-save-line>span,
body.home-page.theme-default.theme-generic.dark-mode .v97-current-head em,
body.home-page.theme-default.theme-generic.dark-mode .v97-home-tabs button.active{
  background:color-mix(in srgb,var(--accent) 10%,#202226)!important;
  border-color:color-mix(in srgb,var(--accent) 35%,#34373c)!important;
}
body.home-page.theme-default.theme-generic.dark-mode .v97-current-head em{
  color:color-mix(in srgb,var(--accent) 78%,#fff 22%)!important;
}


/* ==========================================================
   v178.4 — PREMIUM PALETTE + COMPLETE GENERIC ACCENT COVERAGE
   Identity only. No dimensions / scrolling / layout behavior.
   ========================================================== */
body.theme-default.theme-generic{
  --v96-blue:var(--accent)!important;
  --v96-blue-strong:color-mix(in srgb,var(--accent) 86%,#000 14%)!important;
  --v96-blue-soft:color-mix(in srgb,var(--accent) 8%,var(--panel))!important;
  --v99-blue:var(--accent)!important;
  --v101-blue:var(--accent)!important;
  --primary:var(--accent)!important;
}

/* Calm premium tint system: accent is strongest only on selected/primary actions. */
body[data-theme-family="generic"]{
  --generic-tint:color-mix(in srgb,var(--accent) 9%,var(--panel));
  --generic-tint-strong:color-mix(in srgb,var(--accent) 16%,var(--panel));
  --generic-border:color-mix(in srgb,var(--accent) 38%,var(--line));
}
body[data-theme-family="generic"].dark-mode{
  --generic-tint:color-mix(in srgb,var(--accent) 10%,#1a1b1e);
  --generic-tint-strong:color-mix(in srgb,var(--accent) 18%,#1a1b1e);
  --generic-border:color-mix(in srgb,var(--accent) 42%,#484c52);
}

/* Top chrome + game information */
body[data-theme-family="generic"]:not(.home-page) .topbar #homeBtn,
body[data-theme-family="generic"]:not(.home-page) .save-status,
body[data-theme-family="generic"]:not(.home-page) .game-info-icon,
body[data-theme-family="generic"]:not(.home-page) .title-glyph,
body[data-theme-family="generic"]:not(.home-page) .refresh-mini{color:var(--accent)!important}
body[data-theme-family="generic"]:not(.home-page) .game-info-icon{
  background:var(--generic-tint)!important;
  border-color:var(--generic-border)!important;
}

/* Score table: eliminate old Default blue while keeping a restrained selected state. */
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .sticky-lineup-banner .title-glyph,
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .active-inning-col,
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .batter-row.current-batter .sticky-ord{color:var(--accent)!important}
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .active-inning-col{
  background:var(--generic-tint)!important;
  box-shadow:inset 0 -2px 0 var(--accent)!important;
}
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .batter-row.current-batter .sticky-ord,
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .batter-row.current-batter .sticky-player,
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .batter-row.current-batter .sticky-pos{
  background:var(--generic-tint-strong)!important;
}
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .batter-row.current-batter .sticky-ord{
  box-shadow:inset 3px 0 0 var(--accent)!important;
}
body[data-theme-family="generic"]:not(.home-page) .unified-score-table .current-batter>.sticky-player{
  box-shadow:inset 4px 0 0 var(--accent),inset 0 2px 0 var(--accent),inset 0 -2px 0 var(--accent)!important;
}
body[data-theme-family="generic"]:not(.home-page) .current-batter .mobile-rail-order,
body[data-theme-family="generic"]:not(.home-page) .v118-mobile-score-table .current-batter .mobile-rail-order{
  background:var(--accent)!important;color:var(--generic-accent-ink)!important;
}

/* Defensive alignment: accent badges are soft chips, not saturated blocks. */
body[data-theme-family="generic"]:not(.home-page) .defense-pane-title .title-glyph,
body[data-theme-family="generic"]:not(.home-page) .defense-pane-title>small,
body[data-theme-family="generic"]:not(.home-page) .defense-mode-note{color:var(--accent)!important}
body[data-theme-family="generic"]:not(.home-page) .team-defense-pos{
  border-color:color-mix(in srgb,var(--accent) 30%,var(--line))!important;
}
body[data-theme-family="generic"]:not(.home-page) .team-defense-pos.is-filled{
  border-color:color-mix(in srgb,var(--accent) 52%,var(--line))!important;
  box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 8%,transparent),0 3px 10px rgba(15,23,42,.075)!important;
}
body[data-theme-family="generic"]:not(.home-page) .team-defense-pos>span{
  background:var(--generic-tint-strong)!important;
  border-color:color-mix(in srgb,var(--accent) 38%,var(--line))!important;
  color:var(--accent)!important;
}
body[data-theme-family="generic"].dark-mode:not(.home-page) .team-defense-pos>span{
  background:color-mix(in srgb,var(--accent) 15%,#24262a)!important;
  border-color:color-mix(in srgb,var(--accent) 40%,#484c52)!important;
  color:color-mix(in srgb,var(--accent) 78%,#fff 22%)!important;
}

/* Pitching / generic section controls */
body[data-theme-family="generic"]:not(.home-page) .full-width-pitch .pane-title .title-glyph,
body[data-theme-family="generic"]:not(.home-page) .full-width-pitch .pane-title>span,
body[data-theme-family="generic"]:not(.home-page) .add-pitcher-btn{color:var(--accent)!important}
body[data-theme-family="generic"]:not(.home-page) .add-pitcher-btn{border-color:var(--generic-border)!important}

/* Default editor's legacy blue states become palette-aware. */
body[data-theme-family="generic"] #playModal .editor-context-hint{
  background:var(--generic-tint)!important;border-color:var(--generic-border)!important;
}
body[data-theme-family="generic"] #playModal .editor-context-hint>span,
body[data-theme-family="generic"] #playModal .advanced-title b,
body[data-theme-family="generic"] #playModal #editorModeBadge{
  color:var(--accent)!important;background:var(--generic-tint)!important;border-color:var(--generic-border)!important;
}
body[data-theme-family="generic"] #playModal input:focus,
body[data-theme-family="generic"] #playModal select:focus{
  border-color:var(--generic-border)!important;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 11%,transparent)!important;
}
body[data-theme-family="generic"] #playModal .score-toggle-control input:checked + .score-toggle-copy + .score-toggle-track{background:var(--accent)!important}
body[data-theme-family="generic"] #playModal .fielder-grid button.selected,
body[data-theme-family="generic"] #playModal .fielder-grid button.is-selected{
  background:var(--generic-tint-strong)!important;border-color:var(--generic-border)!important;color:var(--accent)!important;
}
body[data-theme-family="generic"] #playModal #applyPlayBtn:not(:disabled){
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,#fff 12%),var(--accent))!important;
  border-color:var(--accent)!important;color:var(--generic-accent-ink)!important;
  box-shadow:0 6px 14px color-mix(in srgb,var(--accent) 20%,transparent)!important;
}

/* Primary actions use a refined gradient; secondary controls remain neutral. */
body[data-theme-family="generic"]:not(.home-page) .mobile-action-bar .score-command,
body[data-theme-family="generic"] .modal button.primary:not(.danger),
body[data-theme-family="generic"] .setup-actions button.primary:not(.danger),
body[data-theme-family="generic"] #v176PersonalTeamModal .v176-team-manager-actions button.primary:not(.danger){
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,#fff 12%),var(--accent))!important;
  border-color:var(--accent)!important;
  color:var(--generic-accent-ink)!important;
  box-shadow:0 5px 16px color-mix(in srgb,var(--accent) 20%,transparent)!important;
}

/* Home is intentionally calmer: strong CTA, soft selected tab/icons. */
body[data-theme-family="generic"].home-page .v97-continue{
  background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 88%,#fff 12%),var(--accent))!important;
  box-shadow:0 9px 22px color-mix(in srgb,var(--accent) 19%,transparent)!important;
}
body[data-theme-family="generic"].home-page .v97-action-icon{
  background:color-mix(in srgb,var(--accent) 7%,var(--panel,#fff))!important;
  border-color:color-mix(in srgb,var(--accent) 72%,var(--line))!important;
}
body[data-theme-family="generic"].home-page .v97-current-game{
  border-color:color-mix(in srgb,var(--accent) 24%,var(--v97-line,#d9dee5))!important;
  box-shadow:0 8px 26px color-mix(in srgb,var(--accent) 6%,transparent)!important;
}

/* Semantic baseball colors are never remapped by theme. */
body[data-theme-family="generic"] .standalone-out,
body[data-theme-family="generic"] .play-entry.out:not(.runner-out) .play-code{color:var(--score-out,#d92d20)!important}
body[data-theme-family="generic"] .play-entry .runner-out-path,
body[data-theme-family="generic"] .play-entry .runner-out-mark{stroke:var(--score-out,#d92d20)!important}
body[data-theme-family="generic"] .rbi-code{color:var(--score-run,#45bb69)!important}
body[data-theme-family="generic"] .play-entry.scored .diamond-fill{fill:var(--score-run,#45bb69)!important}
